2010-01-14 35 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

相关问题