简体   繁体   中英

How do I use a part of preg_replace pattern as a variable?

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

This piece of code is used to render page anchor. I need to use the

([0-9]+)

part as a variable to do some maths to define the exact url for the href tag. Thanks.

Use preg_replace_callback instead.

In 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>';
  }
);

In 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>\';')
);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM