【问题标题】:php preg_replace : strip all <img> elements except for a certain img idphp preg_replace : 去除所有 <img> 元素,除了某个 img id
【发布时间】:2013-09-16 12:46:08
【问题描述】:

这是我用来从我的 wordpress 字符串内容中删除每个 img 元素的函数:

function strip_images($content){ 
                        return preg_replace('/<img[^>]+./','',$content);
                    }

我怎样才能排除剥离某个id的img?

【问题讨论】:

  • 可以使用正则表达式,但为什么不使用 phpQuery 为例。它是 jQuery for PHP 的一个端口。
  • 在 wordpress 项目中实现它有多容易?
  • 要使用它,您只需包含一个文件。
  • 如果 id 属性紧跟在&lt;img 之后,这很简单,否则我认为有一个正则表达式表示“不要在后面加上任何东西,而不是胡萝卜。”
  • @Jamil 我可以在

标签: php html regex wordpress dom


【解决方案1】:

试试

/<img[^>]+id="someId[^>]+./

经过测试

<img id="someId">
    something else
    <img class="someClass" id="someId">
    <img class="someClass" id="someOtherId">
    <img class="someClass" id="someId" alt="Hey">

选择第一行和第三行。

如果您在 PHP 中对 HTML 执行更多此类操作,您可以使用例如 phpQuery 来完成这项工作。

【讨论】:

  • 如果我想选择除 someId 之外的所有内容怎么办?
  • /]+id="(?!someId")[^>]*./
  • 这条没有图片 :(
  • 我已经用solmetra.com/scripts/regex/index.php 对其进行了测试,它可以工作。请发布一个不匹配但应该匹配的示例。
  • 顺便说一句,正如我之前提到的。使用 phpQuery 之类的库可以保证它按预期工作。解析 HTML 是件麻烦事。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多