我有一些代码,其结构类似于此
function bbcode($Text) { //$Text = preg_replace("/\[video\](.+?)\[\/video\]/",embed_video($1), $Text); return $Text;} function embed_video($url){ if (preg_match("/http:\/\/www.youtube.com\/watch\?v=([0-9a-zA-Z-_]*)(.*)/i", $url, $matches)) { return '<object width="425" height="350">'. '<param name="movie" value="http://www.youtube.com/v/'.$matches[1].'" />'. '<param name="wmode" value="transparent" />'. '<embed src="http://www.youtube.com/v/'.$matches[1].'&autoplay="0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350" />'. '</object>'; } return $url; } $lolcakes = "[video]http://youtube.com/id/xxxxxxpron[/video]"; $lolcakesconverted = bbcode($lolcakes);
问题是它向我吐了一个错误。
解析错误:语法错误,意外的T_LNUMBER,预期的T_VARIABLE或’$’
有关于如何在bbcode函数的preg_replace内调用embed_video的想法吗?
谢谢!
您可以在上使用“ e”修饰符preg_replace()(请参见模式修饰符)
preg_replace()
return preg_replace("/\[video\](.+?)\[\/video\]/e", "embed_video('$1')", $Text);
告诉preg_replace()将第二个参数视为PHP代码。