我有以下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