2016-11-24 6 views
2

Der preg_match unten entspricht "leer" (0 Zeichen) gegen den Platzhalter. Ich möchte, dass deaktivieren:preg_match Wildcard, erfordert mindestens ein Zeichen

preg_match('/site.com\/subsection\/.*?/', $page_url); 

Also das Ding oben site.com/subsection/subpage entsprechen sollten, sollte aber nicht die

site.com/subsection/ root dir passen Wie kann ich das einstellen Regex oben? Danke im Voraus!

+2

Try ' '/site\.com\/subsection \ /.+/'' –

Antwort

4

Die .*? am Ende des Musters entspricht einer leeren Zeichenfolge. Sie müssen es ein oder mehr Zeichen .+ mit make entsprechen:

'/site\.com\/subsection\/.+/' 
         ^

Nun bedarf es mindestens 1 Zeichen nach site.com/subsection/.

Beachten Sie, dass der Punkt maskiert werden muss, damit er einem Literalpunkt entspricht.

Auch könnte es eine gute Idee sein regex Trennzeichen zu verwenden, um andere als / (wie OcuS im comments schlägt unten), wenn Sie viele Schrägstriche im Muster selbst haben. Normalerweise verwende ich Tilden:

'~site\.com/subsection/.+~' 
+0

Danke, das scheint zu funktionieren! Akzeptiert Ihre Antwort wenn erlaubt. – dirk

+1

Und speichern Sie einige Zeichen, indem Sie ein anderes Trennzeichen als '/' wählen. So etwas wie '@site \ .com/subsection /[email protected]'. Es fügt auch mehr Lesbarkeit IMHO hinzu. – OcuS

Verwandte Themen