PHP正则表达式,如何匹配包含[符号?

时间:2010-01-14 13:05:51

标签: php regex preg-match

我整个上午都试图搜索这个答案,但没有运气,我想做的就是匹配[幻灯片或[包含[括号..

的画廊]

代码如下。

$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"; 
}

我使用的正则表达式,我会像这样工作。 搜索字符串的开头,并使用/将转义[从被用作正则表达式的一部分并成为搜索的一部分,

正则表达式不是我的事情....虽然我做的阅读越多,它就会变得更清晰......

2 个答案:

答案 0 :(得分:7)

转义字符为\而非/。此外,您需要使用与正则表达式开头相同的分隔符结束正则表达式。所以你的代码必须是这样的:

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

答案 1 :(得分: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也希望它的第一个参数(regex)在适当的char之间分隔。所以你可以这样做:

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

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