0
function anchor($text)
{
 return preg_replace('#\&gt;\&gt;([0-9]+)#','<span class=anchor><a href="#$1">>>$1</a></span>', $text);
}

这段代码用于渲染页面锚。我需要使用

([0-9]+)

部分作为变量来做一些数学运算来定义 href 标记的确切 url。谢谢。

4

1 回答 1

1

请改用 preg_replace_callback。

在 php 5.3 + 中:

$matches = array();
$text = preg_replace_callback(
  $pattern,
  function($match) use (&$matches){
    $matches[] = $match[1];
    return '<span class=anchor><a href="#$1">'.$match[1].'</span>';
  }
);

在 php <5.3 中:

global $matches;
$matches = array();
$text = preg_replace_callback(
  $pattern,
  create_function('$match','global $matches; $matches[] = $match[1]; return \'<span class=anchor><a href="#$1">\'.$match[1].\'</span>\';')
);
于 2012-07-09T04:00:28.073 回答