2015-11-27 12 views
5

Potrzebuję pomocy ucieczki ukośników we wzorcu, który przeszukuje ścieżkę URL. Staram się sprawdzić, jeśli ścieżka zawiera żadnych numerów w ścieżce po /orders/ tak:odpowiednio uciec ukośniki URL w regex

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

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

Jednak nie jestem w stanie uciec ukośniki prawidłowo. Czy ktokolwiek może pomóc? Dziękuję Ci.

+0

Spróbuj ''\/orders \/([0-9] +) \ /'' –

Odpowiedz

4

Uciekanie odbywa się za pomocą odwróconych ukośników (\/). Ale znak ukośny w celu ograniczenia wyrażeń regularnych może mieć dowolną postać:

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

Będzie działał bez ucieczki.

+0

Zawsze używam '#', ale '|' zrobi lewy. – Rudie

+0

I flip-flop między '#' i '|', ponieważ uważam, że drugi jest łatwiejszy do odczytania, ale nie działa, jeśli masz alternatywne wyszukiwanie '|' we wzorcu. – miken32

+0

@ miken32: rzeczywiście, dlatego użycie '|' jako ogranicznika nie jest dobrym wyborem. Zwróć uwagę, że '#' ma również specjalne znaczenie, jeśli użyjesz modyfikatora x lub sekwencji '(? #comment)'. Przez większość czasu używam '~' (lepszego wyboru niż '/') –