首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在IMG标记中放入斜杠的preg_replace

在IMG标记中放入斜杠的preg_replace
EN

Stack Overflow用户
提问于 2012-01-18 15:18:01
回答 4查看 1.6K关注 0票数 1

我有以下代码,但它将每个img标记替换为:我需要替换中包含的所有属性。

例如,这个:<img src="images/myimg.gif" alt="">

应该变成这样:<img src="images/myimg.gif" alt="" />

下面是我当前不能工作的代码:$html = preg_replace("/<img[^>]+\>/i", "<img $1 />", $html);

EN

回答 4

Stack Overflow用户

发布于 2012-01-18 15:38:51

代码语言:javascript
运行
复制
$html = preg_replace("@(<img.*?)(?<!/)>@i", "$1/>", $html); 
票数 3
EN

Stack Overflow用户

发布于 2012-01-18 15:26:44

如果你想使用$1,你首先需要在其中存储一些东西。这是由捕获组完成的,这意味着只需将您想要重用的模式括起来即可。

代码语言:javascript
运行
复制
$html = preg_replace("/<img([^>]+)\>/i", "<img $1 />", $html);

有几个在线工具可以测试您的正则表达式,请参阅您的正则表达式,例如here on RegExr

您可以找到有关groups here on regular-expressions.info的更多信息

票数 2
EN

Stack Overflow用户

发布于 2012-01-18 15:56:05

此正则表达式可能适用于您,但如果重复应用,它将一次又一次地插入/,从而导致<img ... / / / / />等结果:

代码语言:javascript
运行
复制
$html = preg_replace("/<img([^>]+)\>/is", "<img \1 />", $html);

要避免这种情况,您可以使用negative lookbehind (?<!\/)

代码语言:javascript
运行
复制
$html = preg_replace("/<img([^>]+)(?<!\/)\>/is", "<img \1 />", $html);

它只匹配未用/>关闭的图像标记

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8906503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档