Preg_match regex Hilfe
-
19-09-2019 - |
Frage
Hallo zusammen ich brauche ein wenig Hilfe.
Hier ist der bestehende preg_match Code:
preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);
das macht einen guten Job die post_id
in der folgenden URI-Zeichenfolge des Erfassens:
http://www.example.com/health-and-fitness-tips/999/
ich glaube, das sollte genug Hintergrund sein.
Ich ändere die 999
, die post_id
, how-do-I-lose-10kg-in-12-weeks', the
post_title` und Notwendigkeit, die pre_match regex zu ändern, um die neue Zeichenfolge zu erkennen.
Mein erster Gedanke war nur noch hinzufügen [a-z] - bis zum Ende der Regex der folgenden regex machen:
"/(\/)([0-9][a-z]/-+)(\/?)$/"
Es ist vielleicht diese einfach? Wenn nicht, was falsch ist mit dem oben?
Lösung
Nicht ganz: ([0-9][a-z]/-+)
ist „eine Zahl, gefolgt von einem Buchstaben, gefolgt von mindestens einem Bindestrich“
Sie wollen ([-0-9a-z]+)
.
Andere Tipps
Ich würde nur \w
verwenden:
preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);
Zeichenklassen oder Zeichensätze :
\w
steht für "Wortzeichen", in der Regel[A-Za-z0-9_]
. Beachten Sie die Aufnahme des Unterstreichungs und Ziffern.
\w
für Wort steht, können Buchstaben sowohl Groß- und Kleinbuchstaben A bis Z und a bis z, die Zahl von 0 bis 9 oder _ sein. Es ist äquivalent zu [A-Za-z0-9_]
. Sie können in dem Test Online-Tester hier.