Preg_replace括号之间的空格

时间:2013-01-25 00:03:03

标签: php regex preg-replace

我正试图把我的脑袋放在正则表达式上,而我却惨遭失败。

我有一个字符串,我希望匹配并删除两个括号之间的每个空格。

例如:

This string (is an example).

会变成:

This string (isanexample).

2 个答案:

答案 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中的所有文本。它将此匹配传递给命名方法(或者在本例中为匿名方法)。该方法的返回用于替换匹配的内容。