DOMDocument Xpath添加多个容器div

时间:2017-05-14 15:14:13

标签: php xpath domdocument

我有以下内容为'p'容器中的图像添加了一个容器div,其中包含一组aligncenter ...

$images = $xpath->query("//p/img[contains(concat(' ', @class, ' '), ' aligncenter ')]");
        foreach($images as $img) {
            $wrap = $dom->createElement("div");
            $wrap->setAttribute("class","inner ".$img->getAttribute("class"));
            $img->parentNode->replaceChild($wrap,$img);
            $wrap->appendChild($img);
        }

以下......

...变为

<div class="inner">
    <img src="image.jpg">
</div>

我现在正在尝试添加另一个容器,以便它变成......

<div class="wrapper">
    <div class="inner">
        <img src="image.jpg">
    </div>
</div>

我是否应该再次遍历图像,还是可以修改当前代码,以便同时添加另一个容器div?

1 个答案:

答案 0 :(得分:1)

是的,绝对有可能在一个循环中完成所有操作。假设您当前的代码有效,这应该可以解决问题:

foreach($images as $img) {
    $outerWrap = $dom->createElement('div');
    $outerWrap->setAttribute('class', 'wrapper');
    $wrap = $dom->createElement("div");
    $wrap->setAttribute("class","inner ".$img->getAttribute("class"));
    $img->parentNode->replaceChild($outerWrap,$img);
    $outerWrap->appendChild($wrap);
    $wrap->appendChild($img);
}