我正试图把我的脑袋放在正则表达式上,而我却惨遭失败。
我有一个字符串,我希望匹配并删除两个括号之间的每个空格。
例如:
This string (is an example).
会变成:
This string (isanexample).
答案 0 :(得分:3)
您可以使用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 :(得分:0)
你需要递归地执行此操作。一个正则表达式不会这样做。
$line = preg_replace_callback(
'/\(.*\)/',
create_function(
"\$matches",
"return preg_replace('/\s+/g','',\$matches);"
),
$line
);
这样做是第一个模式找到了parens中的所有文本。它将此匹配传递给命名方法(或者在本例中为匿名方法)。该方法的返回用于替换匹配的内容。