Die Lösung (die in anderen Antworten nicht erwähnt wird - zumindest zum Zeitpunkt meines ursprünglichen Schreibens) ist, dass sich PHP, wenn es sich auf Trennzeichen bezieht, nicht auf die Trennzeichen bezieht, die Sie in Ihrem Code sehen (die Anführungszeichen sind), sondern auf das nächste Zeichen innerhalb der Zeichenfolge. (Tatsächlich habe ich dies noch nie in einer Dokumentation gesehen: Sie müssen es in Beispielen sehen.) Anstatt also eine Syntax für reguläre Ausdrücke zu haben, wie Sie es von vielen anderen Sprachen gewohnt sind:
/something/
PHP verwendet Zeichenfolgen und sucht dann in der Zeichenfolge nach einem anderen Trennzeichen:
'/something/'
Das Trennzeichen, auf das sich PHP bezieht, ist das /
Zeichenpaar anstelle des '
Zeichenpaars. Wenn Sie also schreiben 'something'
, nimmt PHP s
das beabsichtigte Trennzeichen und beschwert sich, dass Sie keine alphanumerischen Zeichen als Trennzeichen verwenden dürfen.
Wenn Sie also (zum Beispiel) eine übergeben möchten, um i
zu zeigen, dass Sie eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung wünschen, übergeben Sie diese innerhalb der Zeichenfolge, jedoch außerhalb der Regex-Begrenzer:
'/something/i'
Wenn Sie etwas anderes als /
Ihr Trennzeichen verwenden möchten , können Sie dies tun, z. B. wenn Sie mit einer URL übereinstimmen und nicht alle Schrägstriche umgehen müssen:
'~something~'
preg_match()
kann, stellen Sie sicher, dass die Reihenfolge der Variablen nicht versehentlich im Funktionsaufruf verwechselt wird , wenn Sie alle Ihre Argumente als Variablen übergeben, da dies mit ziemlicher Sicherheit auch dazu führt Fehler erscheint.