我有以下preg_replace
不preg_replace_callback
其使用阵列用于搜索模式和更换不仅单个值和正常工作:preg_replace函数使所述匹配组的功能weired结果
preg_replace(['/\{/','/\}/','/"(.*?)"/'],['<span class=\'olive\'>{','}</span>','<span class=\'olive\'>${0}</span>'],FoxText::insertBr($model->TafseerText));
然而当我试图通过${0}
的功能是这样的:
preg_replace(['/\{/','/\}/','/"(.*?)"/'],['<span class=\'olive\'>{','}</span>',FoxText::pattern2VerseId("\$0")],FoxText::insertBr($model->TafseerText));
在FoxText::pattern2VerseId
功能我尝试print_r
如下:
public static function pattern2VerseId($txt, $pattern = '/\(((\d+)-(\w+))\)/u')
{
$parts = array_map('trim',explode('-', $txt));
print_r(explode('-', $parts[0]));
return $parts[0].' *'.$parts[0].'|';
}
它打印Array ([0] => $0)
而返回值从以前的调用匹配的字符串!
换句话说,它怎么能够将$parts[0]
作为一个字符串返回并且它无法爆炸这个字符串。或者我怎样才能正确地将值传递给待处理的函数?
顺便说一句,该字符串是一样的东西(125-Verse)
可能的唯一的解决方案重复使用preg \ _replace \ _callback]替换preg \ _replace()e修饰符(http://stackoverflow.com/questions/15454220/replace-preg-replace-e-modifier-with-preg-replace-callback) – revo