私は正規表現に頭を悩ませようとしていますが、惨めに失敗しています。
文字列があり、2 つの括弧の間のすべてのスペースを一致させて削除したいと考えています。
例えば:
This string (is an example).
次のようになります。
This string (isanexample).
私は正規表現に頭を悩ませようとしていますが、惨めに失敗しています。
文字列があり、2 つの括弧の間のすべてのスペースを一致させて削除したいと考えています。
例えば:
This string (is an example).
次のようになります。
This string (isanexample).
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).
これを再帰的に行う必要があります。1つの正規表現ではできません。
$line = preg_replace_callback(
'/\(.*\)/',
create_function(
"\$matches",
"return preg_replace('/\s+/g','',\$matches);"
),
$line
);
これが行うことは、最初のパターンが括弧内のすべてのテキストを見つけることです。この一致を名前付きメソッド (この場合は匿名メソッド) に渡します。メソッドの戻り値は、一致したものを置き換えるために使用されます。