Php 如何在preg replace的regexp中使用substr
我正在为youtube视频制作bbcode。用户可以将视频发布为bbcode,如[youtube]http://www.youtube.com/watch?v=ihK2pPcDSHM[/youtube]。下一步,它将把它转换成html代码。但是我不想显示视频,而是想显示视频的图像。所以我是这样做的:Php 如何在preg replace的regexp中使用substr,php,preg-replace,bbcode,substr,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:/
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=(.*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);
然后图像url变为http://img.youtube.com/vi/ihK2pPcDSHM&feature=channel1/0.jpg
这不会生成有效的图像。我正在尝试将\\1
更改为“.substr('\\1',0,11)。”
但没有任何结果
有解决这个问题的建议吗?谢谢 尝试不同的模式,如:
~\[yt]http://www\.youtube\.com/watch\?v=([a-z0-9-_]+).*?\[/yt]~is
只需告诉您的正则表达式在第一个
&
字符处停止:
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=([^\\&]*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);
$string=preg\u replace(“~\[yt]http://www.youtube.com/watch\v=([^\\&]*)\[/yt]~Uis“,”,$string);
谢谢,但结果只返回了一封信。所以图像的url变成了@user539649:你确定你在进行不区分大小写的匹配吗?嗯……你是什么意思S我只是想展示一下图像。我在代码上做错了什么吗?@user539649:模式中的i修饰符应该已经执行了不区分大小写的匹配,这样[a-z]
就可以同时匹配a
-z
和a
-z
。那么现在为什么它只返回视频id的一个字母而不是整个视频id呢?我应该换什么?谢谢,但现在它不能代替它。它显示bbcode而不替换它:(反斜杠的数量可能是错误的,请尝试清除[^\\&]
中的反斜杠。
$string = preg_replace("~\[yt]http://www.youtube.com/watch\?v=([^\\&]*)\[/yt]~Uis","<img src=\"http://img.youtube.com/vi/\\1/0.jpg\" />", $string);