我有这样的正则表达式:
^page/(?P<id>\d+)-(?P<slug>[^\.]+)\.html$
和阵列:
$args = array(
'id' => 5,
'slug' => 'my-first-article'
);
我想有功能:
my_function($regex, $args)
这将返回如下结果:
page/5-my-first-article.html
如何才能实现这一目标?
喜欢的东西https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse
有趣的挑战,我编写的东西,这个样本的工作,请注意,你需要PHP 5.3+此代码的工作:
$regex = '^page/(?P<id>\d+)-(?P<slug>[\.]+)\.html$';
$args = array(
'id' => 5,
'slug' => 'my-first-article'
);
$result = preg_replace_callback('#\(\?P<(\w+)>[^\)]+\)#', function($m)use($args){
if(array_key_exists($m[1], $args)){
return $args[$m[1]];
}
}, $regex);
$result = preg_replace(array('#^\^|\$$#', '#\\\\.#'), array('', '.'), $result); // To remove ^ and $ and replace \. with .
echo $result;
输出: page/5-my-first-article.html
在线演示 。