preg_replace舍入映射值的内部值

时间:2016-11-05 00:54:35

标签: php

我有一个像这样的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不是很熟悉,并且我不确定如何在我需要舍入的区域中具体化。

1 个答案:

答案 0 :(得分:2)

您可以使用preg_replace_callback()。它允许您定义一个回调,以获取传递给它的所有匹配。然后,您可以在构建新字符串之前随意操作它们。

echo preg_replace_callback('/(.*?)(?:\()(.*?)(?:\))/', function($matches) {

    return $matches[0] . '<div class="parenthesis">' . round($matches[1]) . '</div>';

}, $data['display']);