如何将preg_replace模式的一部分用作变量?

时间:2012-07-09 03:30:49

标签: php regex variables preg-replace

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

这段代码用于呈现页面锚点。 我需要使用

([0-9]+)

part作为变量来做一些数学来定义href标签的确切url。 感谢。

1 个答案:

答案 0 :(得分: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&lt; 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>\';')
);