preg_replace括号内的多个字符串(php / regex)

时间:2014-12-05 18:32:38

标签: php regex

我有字符串

[test](test\\-test\\-abc) abcde\\-

我想

[test](test-test-abc) abcde\\-

我需要将\\-替换为-和regex / preg_replace。 需要仅在括号之间替换字符串。我找到了一个解决方案,但它只取代了第一次出现。

$result = preg_replace("/(\[.*?\])(\(.*?)(\\\\-)(.*?\))/", '$1$2-$4', $str);

1 个答案:

答案 0 :(得分:1)

您可以使用preg_replace_callback

$str = '[test](test\\\\-test\\\\-abc) abcde\\\\-';
$txt = preg_replace_callback('~\([^)]+\)~',
    function ($m) { return str_replace('\\\\-', '-', $m[0]); }, $str);
echo $txt;
//=> [test](test-test-abc) abcde\\-