我有一个像这样的preg_replace:
echo preg_replace('/(.*?)(?:\()(.*?)(?:\))/', '$1<div class="parenthesis">($2)</div>', $data['display']);
我需要对变量$2
我试过了:
echo preg_replace('/(.*?)(?:\()(.*?)(?:\))/', '$1<div class="parenthesis">('.round($2).')</div>', $data['display']);
但是它返回了一个语法错误,我对preg_replace不是很熟悉,并且我不确定如何在我需要舍入的区域中具体化。
答案 0 :(得分:2)
您可以使用preg_replace_callback()
。它允许您定义一个回调,以获取传递给它的所有匹配。然后,您可以在构建新字符串之前随意操作它们。
echo preg_replace_callback('/(.*?)(?:\()(.*?)(?:\))/', function($matches) {
return $matches[0] . '<div class="parenthesis">' . round($matches[1]) . '</div>';
}, $data['display']);