我有字符串
[test](test\\-test\\-abc) abcde\\-
我想
[test](test-test-abc) abcde\\-
我需要将\\-
替换为-
和regex / preg_replace。
需要仅在括号之间替换字符串。我找到了一个解决方案,但它只取代了第一次出现。
$result = preg_replace("/(\[.*?\])(\(.*?)(\\\\-)(.*?\))/", '$1$2-$4', $str);
答案 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\\-