如何在 preg 替换的正则表达式中使用 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< /code> 这不会产生有效的图像。我试图将
\\1
更改为 ".substr('\\1', 0,11)."
但没有任何结果。
有什么建议可以解决这个问题吗?谢谢!
i am making a bbcode for youtube videos.User can post a video as bbcode eg like [youtube]http://www.youtube.com/watch?v=ihK2pPcDSHM[/youtube]. Next, it will convert it to html code.But instead of video,i want to show also the image of the video. So i do it like this:
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=(.*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);
It shows the image, but when somebody puts a url like:
http://www.youtube.com/watch?v=ihK2pPcDSHM&feature=channel
Then the image url becomes http://img.youtube.com/vi/ihK2pPcDSHM&feature=channel1/0.jpg
which does not lead to a valid image. I am trying to change the \\1
to ".substr('\\1', 0,11)."
but it doesnt have any result.
Any suggestion to solve this? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试不同的模式,例如:
Try a different pattern like:
只需告诉您的正则表达式在第一个
&
字符处停止即可:Just tell your regex to stop on the first
&
character: