我为youtube视频制作了一个bbcode。用户可以将视频发布为bbcode,例如[youtube] http://www.youtube.com/watch?v=ihK2pPcDSHM [/ youtube]。接下来,它会将其转换为HTML代码。但是我想要显示视频图像而不是视频。所以我这样做:
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=(.*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);
它显示图像,但是当有人放置一个网址时:
http://www.youtube.com/watch?v=ihK2pPcDSHM&feature=channel
然后图像网址变为http://img.youtube.com/vi/ihK2pPcDSHM&feature=channel1/0.jpg
,这不会导致有效图像。我正在尝试将\\1
更改为".substr('\\1', 0,11)."
,但它没有任何结果。
有任何解决此问题的建议吗?谢谢!
答案 0 :(得分:0)
尝试不同的模式,例如:
~\[yt]http://www\.youtube\.com/watch\?v=([a-z0-9-_]+).*?\[/yt]~is
答案 1 :(得分:0)
告诉你的正则表达式停止第一个&
字符:
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=([^\\&]*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);