2

正規表現を使用してパターンを検出しようとしていますが、奇妙な問題があります。それがパターンです -

"/sub\{(.*)\}/i"

私はこのように使用しています:

if(preg_match("/sub\{(.*)\}/i",$item))
{
    $sub = explode("|",$item);
    $sub_name = explode("{",$sub[0]);
    $sub_name = $sub_name[1];
    ...
}

これが文字列です-

sub{selected posts|post[1]}

さて、上記の文字列は良いのですが、このような別のアイテムを追加すると -

sub{selected posts|post[1],post[2]}

編集 - メニューの形式に問題がありました。サブセクションにあるときに「、」記号を爆発させました。みんなありがとう!

4

3 に答える 3

2

次のように中括弧をエスケープする必要があります。

"/sub\{(.*)\}/i"
于 2012-07-20T19:28:37.647 に答える
1

Mike が書いたことに加えて、正規表現文字をエスケープするためにpreg_quoteを介して文字列を実行するようにしてください。

于 2012-07-20T19:31:15.420 に答える
1

正規表現は問題ないように見えます。計算しようとしている部分に改行がありますか? mその場合は、取得する修飾子とs修飾子を追加します"/sub{(.*)}/ims"

http://php.net/manual/en/reference.pcre.pattern.modifiers.php

于 2012-07-20T19:29:37.913 に答える