在WordPress上使用DomDocument将标签<a>更改为<div>

时间:2019-10-24 14:39:25

标签: php wordpress function domdocument

我是PHP的初学者,我想设置一些函数来替换WordPress上的特定代码位(包括我无法直接编辑的插件元素)。

下面是一个示例(第一行:初始结果,第二行:所需结果):

<a href="" class="vcard author"><span class="fn" itemprop="name">Gael Beyries</span></a>

<div class="vcard author"><span class="fn" itemprop="name">Gael Beyries</span></div>

PS:我遇到了以下主题:Parsing WordPress post content,但是该示例对于我想做的事情来说太复杂了。您能否介绍一个解决此问题的示例代码,以便我可以尝试对其进行修改以修改其他html元素?

1 个答案:

答案 0 :(得分:1)

尽管我不确定它是否适合WP,但我基本上已经从链接的答案中获取了代码,并根据您的要求进行了修改。

我假设您想使用<a>查找class="vcard author"标记,这是XPath表达式的基础。 foreach()循环中的代码仅将数据复制到一个新节点并替换旧节点...

function replaceAWithDiv($content){
    $dom = new DOMDocument();
    $dom->loadHTML($content);
    $xpath = new DOMXPath($dom);
    $aTags = $xpath->query('//a[@class="vcard author"]');

    foreach($aTags as $a){
        // Create replacement element
        $div = $dom->createElement("div");
        $div->setAttribute("class", "vcard author");
        // Copy contents from a tag to div
        foreach ($a->childNodes as $child ) {
            $div->appendChild($child);
        }
        // Replace a tag with div
        $a->parentNode->replaceChild($div, $a);
    }
    return $dom->saveHTML();
}