Php 如何用preg_replace替换括号内的逗号

Php 如何用preg_replace替换括号内的逗号,php,preg-replace,brackets,Php,Preg Replace,Brackets,我需要将“,”替换为“enocoma”,但只替换位于括号内的内容。 我试着这样做,但它只替换括号内的第一个逗号 $text = 'asd, asd <asd, asd, adasd> ... '; preg_replace_callback("/(<.*?),(.*?>)/", create_function('$m', 'return $m[1].\'enoComma\'.$m[2];'), $text ); echo $text; // asd, as

我需要将“,”替换为“enocoma”,但只替换位于括号内的内容。
我试着这样做,但它只替换括号内的第一个逗号

$text = 'asd, asd <asd, asd, adasd> ... ';
preg_replace_callback("/(<.*?),(.*?>)/",
    create_function('$m', 'return $m[1].\'enoComma\'.$m[2];'),
    $text
);
echo $text; // asd, asd <asdenoComma asd, adasd> ... 
$text='asd,asd…';
preg_replace_回调(“/()/”,
创建函数('m','return$m[1].\'enocoma\'.$m[2];'),
$text
);
echo$text;//asd,asd。。。

我认为应该这样做:

$text = 'asd, asd <asd, asd, adasd> ... <a,b,c>';

function replace_function($s) {
  return str_replace(",", "enoComma", $s[0]);
}

$text = preg_replace_callback("|<(.*)>|", "replace_function", $text);

echo "$text\n";
$text='asd,asd…';
函数替换函数($s){
返回str_replace(“,”,“enocoma”,$s[0]);
}
$text=preg_replace_回调(“| |”、“replace_函数”、$text);
回显“$text\n”;
输出:

asd, asd <asdenoComma asdenoComma adasd> ... <aenoCommabenoCommac>
asd,asd。。。
既然您已经在使用,我就让它获取括号中的所有内容,然后让回调函数用逗号替换每个逗号

<?php
$text = 'asd, asd <asd, asd, adasd> asd, asd asd, asd <x, y, z> asd';
$text = preg_replace_callback('/(?<=<)[^<>]+(?=>)/', function($e) {
    return str_replace(',', 'enoComma', $e[0]);
}, $text);
echo $text;

谢谢!它起作用了!但是我对reg表达式“|()|”做了一点修改。再次感谢你!没错,嵌套括号可能有不必要的行为。
a,b
将变成
a,b
,但更糟糕的是:
a,b
=>
a,b
(请注意,abc前面的逗号保持不变!)
asd, asd <asdenoComma asdenoComma adasd> asd, asd asd, asd <xenoComma yenoComma z> asd