如何在preg_replace的regex中使用substr

时间:2010-12-12 17:25:19

标签: php preg-replace bbcode substr

我为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).",但它没有任何结果。

有任何解决此问题的建议吗?谢谢!

2 个答案:

答案 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);