php - 使用 preg_replace 删除 img 类

标签 php preg-replace

我想删除 php 中的以下

<img class="hSprite" src="something" width="160" height="120"
sprite="/t/3010187.jpg" id="3010187">

我尝试了以下方法,但它不起作用

preg_replace("@<img class=\"hSprite\".*?>@s", "", $html);

编辑 我想删除整行,这样就不会有任何输出

最佳答案

为什么你不在这里使用 dom 和 xpath 查询在 php 中尝试 dom 类,它能够从该 img 节点中删除该类。不要依赖正则表达式来处理 dom 相关的事情,使用 php 团队提供的 Dom 类。

$text = 
<<<heredoc
        <img class="hSprite" src="something" width="160" height="120"
sprite="/t/3010187.jpg" id="3010187">
heredoc;

$doc = new DOMDocument();
$doc->loadHTML($text);

//$img = $doc->getElementsByTagName("img")->item(0);

$xpath = new DOMXPath($doc);

$expression = "//*[contains(@class, 'hSprite')]";
$classElements = $xpath->query($expression);

foreach ($classElements as $element) {
    //$element->attributes->getNamedItem("class")->nodeValue = '';
    $element->parentNode->removeChild($element);
}

//echo $doc->saveHTML($img);
echo $doc->saveHTML();

关于php - 使用 preg_replace 删除 img 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967246/

相关文章:

php pdo : get the columns name of a table

php - Magento 上使用 iPhone 主题的移动商店

php - 第一次数据支付网关集成soap故障报错

php - Insert_id 在下一个准备好的语句中直接使用时为 null

PHP preg_replace 多条规则

php - 为什么 ENUM ("0", "1") 在 Mysql 中保存为空字符串?

PHP:使用 preg_replace 过滤一些 html 属性。获取第一个 </span>,而不是最后一个

php - 解析电子邮件或 html 模板的最佳方法是什么?

php - preg_replace() 中带有编号反向引用的负向回溯无效

PHP preg_replace 标题(非英文字符)来清理 slug 不起作用