正则表达式 - 尝试自动嵌入YouTube视频

时间:2011-10-17 08:02:58

标签: php regex

  

可能重复:
  How to embed YouTube videos in PHP?

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

1 个答案:

答案 0 :(得分:0)

如果您的问题只是URL字符串中的&amp;,那么请扩展第二个正则表达式中的字符类。它也只需要替换;

#((http://)?(www.)?youtube\.com/watch\?[=a-z0-9&_;]+)#i

然而,匹配\S+可能更有意义。该字符串中可能存在其他意外参数,因此如果您的字符类太严格,则会有更多剩余的参数。