我整个上午都试图搜索这个答案,但没有运气,我想做的就是匹配[幻灯片或[包含[括号..
的画廊]代码如下。
$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 :(得分: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)