function youtube($string)
{
preg_match('#(v\/|watch\?v=)([\w\-]+)#', $string, $match);
return preg_replace(
'#((http://)?(www.)?youtube\.com/watch\?[=a-z0-9&_]+)#i',
"<div align=\"center\"><iframe title=\"YouTube video player\" width=\"480\" height=\"390\" src=\"http://www.youtube.com/embed/$match[2]\" frameborder=\"0\" allowfullscreen></iframe></div>",
$string);
}
此功能几乎可以使用,但自“&amp;”以来字符变成“&amp; amp;”它并没有完全摆脱整个URL。
http://www.youtube.com/watch?v=oRcUzu_xdJI&feature=feedu
例如返回
嵌入式视频&amp; amp; feature = feedu
我如何修改第二个正则表达式?
#((http://)?(www.)?youtube\.com/watch\?[=a-z0-9&_]+)#i
答案 0 :(得分:0)
如果您的问题只是URL字符串中的&
,那么请扩展第二个正则表达式中的字符类。它也只需要替换;
:
#((http://)?(www.)?youtube\.com/watch\?[=a-z0-9&_;]+)#i
然而,匹配\S+
可能更有意义。该字符串中可能存在其他意外参数,因此如果您的字符类太严格,则会有更多剩余的参数。