Christian Seiler: Wildcards -> RegExp

Beitrag lesen

Hallo Thoralf,

Ich will zum Beispiel aus *.txt folgendes machen: preg_match('/(.+.txt$/', $dateiname ).

Was aber falsch ist, denn korrekt wäre /^.*.txt$/ - "*" matched nämlich auch gar nichts:

christian@midnight:~/test$ touch ab.txt
christian@midnight:~/test$ touch b.txt
christian@midnight:~/test$ ls *b.txt
ab.txt  b.txt
christian@midnight:~/test$

Wie finde ich am günstigsten heraus, welche für Dateinamen und Pfade zulässigen Zeichen ich für den RegExp escapen muss? (. -> . etc.)

In http://de3.php.net/manual/de/pcre.pattern.syntax.php sind die Zeichen aufgelistet:

"", "^", "$", ".", "[", "]", "|", "(", ")", "?", "*", "+", "{", "}" und noch der Delimiter. Alle bis auf ? und * musst Du nun durch \X ersetzen. (wobei X hier das Zeichen sei) ? musst Du durch . ersetzen und * durch .*

Viele Grüße,
Christian

--
| http://www.selflinux.org/                                                  |
| http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm                      |
| sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[ |
| http://emmanuel.dammerer.at/selfcode.html                                  |