Ich benutze diesen ziemlich einfachen regulären Ausdruck:Warum beeinflusst das verwendete Trennzeichen die Gültigkeit einer Regex?
^[\x20-\x7E]+$
Wenn ich versuche, es funktioniert mit einigen PHP Regex zu verwenden, wie preg_match() es in alleiniger Fall wirft Warnung, wenn ich ~
Zeichen (Tilde) als Trennzeichen verwenden.
So Ausführung folgenden Zeilen geht gut
preg_match("/^[\x20-\x7E]+$/", $s); # delimiter "/"
preg_match("!^[\x20-\x7E]+$!", $s); # delimiter "!"
preg_match("#^[\x20-\x7E]+$#", $s); # delimiter "#"
aber aus irgendeinem Grund, diese Linie
preg_match("~^[\x20-\x7E]+$~", $s); # delimiter "~"
eine Warnung wirft
Warning: preg_match(): Unknown modifier ']' in some_script.php on line XX
Anmerkung: es geschieht nur, wenn es verwendet mit doppelten Anführungszeichen!
Ich verwende Tilde die ganze Zeit als Trennzeichen und habe nie Probleme damit bis zu diesem Fall konfrontiert und frage mich wirklich, warum das passiert. Kann nicht finden, dass Tilde in regulären Ausdrücken eine besondere Bedeutung hat (ich bin zu 99% sicher, dass das nicht der Fall ist), oder es ist nur ein Fehler.
kann ich sicherlich umgehen, aber die Frage ist: Was ist der Unterschied zwischen Tilde und anderen Begrenzer?
Verwenden Sie einfach etwas anderes dann! – GordonM
@GordonM Frage ist nicht, wie man das löst, es ist warum es passiert? ;) – Wh1T3h4Ck5
Hmm, denkt es, dass '$ ~' eine Variable ist? Versuche einfache Anführungszeichen ... ''~ ~ [\ x20- \ x7E] + $ ~'' –