【问题标题】:PHP: Remove all <img> tag except for first onePHP:删除除第一个之外的所有 <img> 标签
【发布时间】:2014-09-14 16:33:35
【问题描述】:

我有这段代码可以去除除&lt;img&gt;&lt;p&gt; 之外的所有HTML 标记:

<?php
        $item->core_body =strip_tags( $item->core_body, '<img><p>');
?>

因为我的$item-&gt;core_body 包含几个&lt;img&gt; 标签,所以我想添加另一个条件:我只想保留第一个&lt;img&gt; 标签并删除所有以下标签。

根据答案:

<?php
                    $item->core_body =str_replace('<img','<***',$item->core_body,1);
                    $item->core_body =strip_tags( $item->core_body, '<img><p>');
                    $item->core_body =str_replace('<***','<img',$item->core_body,1);
?>

【问题讨论】:

标签: php html strip-tags


【解决方案1】:

最简单的方法:将第一个 img-tag 替换为其他内容,删除其余图像标签,将第一个标签替换为 'img'。

类似

$item= preg_replace('/\<img/','****',$item,1);
$item= strip_tags( $item, '<p>');
$item= str_replace('****','<img',$item);

【讨论】:

  • 我试过了,但它给了我一个空白页。知道为什么吗? (我正在一个 joomla 网站上编辑一个组件)
  • 你改变变量了吗?我确实跳过了-&gt;core_body 部分
  • 是的,我做到了。对不起,我没有提到它。请查看我编辑的问题中的代码。
  • 我的错,是一个匆忙的答案。我已经测试了更新的答案,现在它可以工作了。我的错误:str_replace 的第四个参数返回替换的数量,preg_replace 的第四个参数限制了替换的数量。此外,在您的strip_tags( $item-&gt;core_body, '&lt;img&gt;&lt;p&gt;'); 行中,第二个参数是“允许标签”,因此它不会删除任何&lt;img 标签。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2021-01-28
  • 1970-01-01
  • 2015-11-18
相关资源
最近更新 更多