代码之家  ›  专栏  ›  技术社区  ›  Marty

php正则表达式,如何匹配包含[符号]的第一节?

  •  1
  • Marty  · 技术社区  · 15 年前

    我整个上午都在试图寻找这个答案,但运气不好,我只想匹配[幻灯片放映或[带括号的图库..

    代码如下。

    $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 回复  |  直到 12 年前
        1
  •  3
  •   codaddict    15 年前
    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"; 
    }
    

    变化:

    这个 [ 需要作为metachar进行转义,要使用的转义char是 \ . 另外,preg_match希望它的第一个参数(regex)在合适的字符之间进行分隔。所以你可以这样做:

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

    preg_match("|^\[slideshow|", $gallery)
    
        2
  •  7
  •   Residuum    15 年前

    转义符是 \ / . 此外,还需要使用与regex开头相同的分隔符结束regex。所以您的代码应该是这样的:

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