【发布时间】:2016-10-03 15:05:55
【问题描述】:
我有以下 preg_replace not preg_replace_callback 使用 arrays 搜索模式和替换不仅单个值而且它工作正常:
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)
【问题讨论】: