2010-01-14 34 views
1

我已經嘗試了所有上午尋找這個答案,但沒有運氣,我想要做的就是匹配[幻燈片或[畫廊與包括[支架..PHP正則表達式,如何匹配包含[符號?

代碼如下。

$gallery = get_post_meta($post->ID, 'gallery', true); 


if (preg_match("|^/[slideshow", $gallery)) { 
    echo "Slideshow was forund"; 
} else if (preg_match("|^/[nggallery", $gallery)) { 
    echo "Gallery was found"; 
} else { 
    echo "No Match found - No Meta Data available"; 
} 

我用過的正則表達式,我雖然會像這樣工作。 搜索字符串的開始,並使用/將轉義[從被用作正則表達式的一部分,併成爲搜索的一部分,

正則表達式只是不是我的東西....雖然更多的閱讀我這樣做,它變得更清晰一些..

+0

Offtopic(ISH)提示:我發現快報(http://www.ultrapico.com/Expresso.htm)成爲非常有用調試我的正則表達式。不過只有Windows。 – 2010-01-14 13:12:43

回答

3
if (preg_match("/^\[slideshow/", $gallery)) { 
    echo "Slideshow was forund"; 
} else if (preg_match("/^\[nggallery/", $gallery)) { 
    echo "Gallery was found"; 
} else { 
    echo "No Match found - No Meta Data available"; 
} 

所做的更改:

的需求[進行轉義爲一元字符,使用轉義字符是\。另外,preg_match期望它的第一個參數(正則表達式)在合適的char之間進行分隔。所以,你可以這樣做:

preg_match("/^\[slideshow/", $gallery) 

preg_match("|^\[slideshow|", $gallery) 
+0

不得不說,謝謝,作品魅力, 感謝您的幫助... – Marty 2010-01-14 13:13:07

7

轉義字符是\而不是/。此外,您需要使用與正則表達式開始時相同的分隔符來結束正則表達式。所以,你的代碼將需要是這樣的:

preg_match("|^\[slideshow|", $gallery) 
+0

非常感謝,還有很多閱讀我的想法。 – Marty 2010-01-14 13:14:21

+2

雖然這兩個答案都是正確的,但這個答案能更好地解釋需要更改的內容以及原因。 – 2010-01-14 13:24:21

相關問題