2015-11-27 19 views
5

Ich brauche Hilfe entkommen Schrägstriche in einem Muster, das einen URL-Pfad sucht. Ich versuche, zu überprüfen, ob ein Pfad irgendwelche Zahlen in dem Pfad enthält nach /orders/ wie folgt aus:ordnungsgemäß URL-Schrägstriche in Regex

$str = '/admin/store/orders/20284?width...'; 

if (preg_match ('/orders/([0-9]+)/', $str, $matches)) 
{ 
    print_r($matches); 
} 

Aber ich bin nicht in der Lage die Schrägstriche richtig zu entkommen. Kann jemand helfen? Vielen Dank.

+0

Versuchen Sie ''\/orders \/([0-9] +) \ /' ' –

Antwort

4

Escaping erfolgt mit Backslashes (\/). Aber der Schrägstrich reguläre Ausdrücke begrenzen kann jedes Zeichen sein:

if (preg_match ('~orders/([0-9]+)~', $str, $matches)) 

arbeiten, ohne zu entkommen.

+0

Ich verwende immer' # ', aber' | 'wird den Trick tun. – Rudie

+0

Ich flippe zwischen '#' und '|', da ich finde, dass letzteres einfacher zu lesen ist, aber es funktioniert nicht, wenn Sie eine alternative Suche '|' in Ihrem Muster haben. – miken32

+0

@ miken32: Deshalb ist die Verwendung von '|' als Trennzeichen keine gute Wahl. Beachten Sie, dass '#' auch eine besondere Bedeutung hat, wenn Sie den Modifikator x oder die Sequenz '(? #comment)' verwenden. Die meiste Zeit benutze ich '~' (bessere Wahl als '/') –

Verwandte Themen