2015-11-27 56 views
5

我需要幫助在搜索URL路徑的模式中轉義斜線。我想檢查是否路徑包含路徑中的任何數字/orders/這樣後:在正則表達式中正確地轉義URL斜槓

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

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

不過,我不能夠正確地逃脫斜線。任何人都可以幫忙嗎?謝謝。

+0

嘗試''\/orders \ /([0-9] +)\'' –

回答

4

轉義完成反斜槓(\/)。但劃分正則表達式的斜線字符可以是任何字符:

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

將在不轉義的情況下工作。

+0

我總是使用'#',但'|'會做伎倆。 – Rudie

+0

我在'#'和'|'之間觸發器,因爲我發現後者更容易閱讀,但如果您在模式中有替代搜索'|',則它不起作用。 – miken32

+0

@ miken32:確實,這就是爲什麼使用'|'作爲分隔符不是一個好選擇。請注意,如果使用x修飾符或在序列'(?#comment)'中,'#'也有特殊含義。大多數情況下,我使用'〜'(比'/'更好的選擇) –

相關問題