使用 preg_replace 查找具有特定 src 的图像
我有一些带有图像的文本。我想用其他内容替换文本中的特定图像。
即文本包含一个 youtube img 网址,我想用实际的视频链接替换它。
<img class="mceItem" src="http://img.youtube.com/vi/1MsVzAkmds0/default.jpg" alt="1MsVzAkmds0">
并将其替换为 youtube Iframe 代码:
<iframe title="'.$id.'" class="youtube-player" type="text/html" width="576" height="400" src="http://www.youtube.com/embed/'.$id.'" frameborder="0"></iframe>
我的函数如下所示:
function replacelink($link) {
$find= ("/<img src=[^>]+\>/i");
$replace = youtube("\\2");
return preg_replace($find,$replace);
}
我需要在正则表达式中更改什么才能执行上述操作?
I have some text with images within it. I want to replace specific images within the text with something else.
i.e. the text contains an a youtube img url that I want to replace with the actual video link.
<img class="mceItem" src="http://img.youtube.com/vi/1MsVzAkmds0/default.jpg" alt="1MsVzAkmds0">
and replace it with the youtube Iframe code:
<iframe title="'.$id.'" class="youtube-player" type="text/html" width="576" height="400" src="http://www.youtube.com/embed/'.$id.'" frameborder="0"></iframe>
my function looks like this:
function replacelink($link) {
$find= ("/<img src=[^>]+\>/i");
$replace = youtube("\\2");
return preg_replace($find,$replace);
}
What do I need to change in the regex to do the above?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的正则表达式正在寻找
,但
img
和src
之间有一个class
属性。使用$find= '/]+>/i';
可以纠正该问题;但是,这说明了为什么您不应该使用正则表达式来解析 HTML。你写道:
如果您所指的文本实际上是HTML,那么除了使用正则表达式之外,还有更好的选择。
更新
我相信这就是您正在寻找的。
不需要单独的
youtube()
函数。如果您想要替换多张图像,请使用
preg_replace_all()
而不是preg_replace()
。Your regex is looking for
<img src=
, but there is aclass
attribute betweenimg
andsrc
. Using$find= '/<img.*src=[^>]+>/i';
corrects the problem; however, this illustrates why you shouldn’t use regex to parse HTML.You wrote:
If the text you’re referring to is actually HTML, then there are better alternatives to using regex for this.
Update
I believe this is what you’re looking for.
There’s no need for a separate
youtube()
function.If you want to replace more than one image, use
preg_replace_all()
instead ofpreg_replace()
.以下正则表达式将获取具有特定 url 的所有图像。我不确定这是否是您想要的。
如果有多个图像,前一个答案将会失败。
The following regex would get all the images with a specific url. I not sure if this is what you wanted.
Previous anwser would fail if there were more than one image.