3

私は正規表現に頭を悩ませようとしていますが、惨めに失敗しています。

文字列があり、2 つの括弧の間のすべてのスペースを一致させて削除したいと考えています。

例えば:

This string (is an example).

次のようになります。

This string (isanexample).
4

2 に答える 2

4

preg_replace_callbackを使用できます。

$str = "This string (is an example).";
$str = preg_replace_callback("~\(([^\)]*)\)~", function($s) {
    return str_replace(" ", "", "($s[1])");
}, $str);
echo $str; // This string (isanexample).
于 2013-01-25T00:55:41.110 に答える
0

これを再帰的に行う必要があります。1つの正規表現ではできません。

$line = preg_replace_callback(
        '/\(.*\)/',
        create_function(
            "\$matches",
            "return preg_replace('/\s+/g','',\$matches);"
        ),
        $line
    );

これが行うことは、最初のパターンが括弧内のすべてのテキストを見つけることです。この一致を名前付きメソッド (この場合は匿名メソッド) に渡します。メソッドの戻り値は、一致したものを置き換えるために使用されます。

于 2013-01-25T00:12:20.130 に答える