Regex problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
alphanumerische zeichen
auftauchen
ausdruck
code
domain
einzelfall
entsprechende zeichen
erstes zeichen
falle
fehlermeldung
folgenden beispiel
gleicher art
letztes zeichen
not
sprache
tun
verwendete zeichen
warnung
weglassen
zeichen
-
Hey, und zwar hab ich hier ein pattern von meinem damaligen Chatscript AutoIT-Sprache
.*?|(How).*?|(do|are).*?|(you)?.*
Doch wenn ich es in den preg_match mache kommt es zu Warnungen wie z. B. das:
Warning: preg_match(): Unknown modifier '*'
Ich weiß, dass es etwas mit "/" zu tun hat, aber ich verstehe nicht wo und wann ich das einsetzen muss.
Ich brauche eure Hilfe -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ganz vorne und ganz hinten, also so:
/.*?|(How).*?|(do|are).*?|(you)?.*/
Das müsste gehen.
Mfg
mator -
Danke dir. Jetzt gehts. ABer kannst du mir erklären was dieses Slash bewirkt? Ich hab ein paar Erklärungen angeguckt, aber die gingen nicht so darauf ein.
-
Delimiter (engl. to delimit ⇒ einschränken, begrenzen) dienen in der Sprache PHP zum Abgrenzen des Suchmusters vom Rest des Regulären Ausdrucks. Als Delimiter kann theoretisch jedes nicht-alphanumerische Zeichen außer dem Backslash verwendet werden.
Delimiter sind in PHP notwendig, da hinter dem eigentlichen Suchmuster noch sogenannte Modifier notiert werden können, die das Verhalten des Ausdrucks beeinflussen können.
Das als Delimiter verwendete Zeichen sollte sinnigerweise nicht im eigentlichen Suchmuster auftauchen, da es sonst als Delimiter interpretiert werden würde. Soll dieses Zeichen trotzdem im Suchmuster verwendet werden, gibt es zwei Möglichkeiten:
1. man benutzt ein anderes Zeichen als Delimiter - was wohl die einfachste und gängigste Möglichkeit ist - oder
2. man maskiert das entsprechende Zeichen, indem man ihm einen Backslash voranstellt und damit seine Bedeutung als Delimiter aufhebt.
Ein häufig auftretender Fehler ist das Weglassen der Delimiter. In diesem Falle gibt es (bis auf Ausnahmen) eine Fehlermeldung seitens PHP. Das Verwenden des Delimiters innerhalb des Suchmusters produziert ebenso eine Fehlermeldung. Welche das im Einzelfall ist, hängt von der Struktur des Regulären Ausdrucks ab. So erhält man bei einem vergessenen Delimiter in diesem Falle
abcde@domain\.com
die Fehlermeldung Delimiter must not be alphanumeric or backslash, da sowohl der einleitende als auch der schließende Delimiter ein alphanumerisches Zeichen sind - nämlich ein a (erstes Zeichen) beziehungsweise ein m (letztes Zeichen).
Im folgenden Beispiel
@domain\.com
aber erhält man die Fehlermeldung No ending delimiter found, da das erste Zeichen des Regulären Ausdrucks durchaus ein erlaubter Delimiter ist, aber kein abschließender Delimiter gleicher Art gefunden wurde. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage