删除(如果存在)一个'班级'来自' a'的属性PHP中的html元素

时间:2014-10-04 18:29:19

标签: php regex

我想从PHP中的'a'html元素中删除'class'属性。

示例1:

<p class="red">Link: <a href="http://www.google.com" style ="margin: 0px">google</a>.</p>

结果:

<p class="red">Link: <a href="http://www.google.com" style ="margin: 0px">google</a>.</p>

示例2:

<p class="red">Link: <a href="http://www.google.com" class =  "link" style="margin: 0px"  >google</a>.</p>

结果:

<p class="red">Link: <a href="http://www.google.com" style="margin: 0px"  >google</a>.</p>

2 个答案:

答案 0 :(得分:1)

正则表达式很好。我爱他们,虽然他们在被滥用的情况下会像顽皮的女孩一样行事。所以我要用漂亮的 DomDocument

来做这件事
<?php
    $html = <<< EOT
    <p class="red">Link: <a href="http://www.google.com" class =  "link" style="margin: 0px"  >google</a>.</p>
EOT;
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $a = $dom->getElementsByTagName('a');
    foreach($a as $tag)
      $tag->removeAttribute('class');
    $html = $dom->saveHTML();
    echo $html;

答案 1 :(得分:0)

试试这个

(<a(?:\s+\w+\s*=\s*(?P<quote>["']).*?(?P=quote))*)\s+class\s*=\s*(?P<q>["']).*?(?P=q)

替换为\1

See demo.