Php 获取父节点的HTML,包括子节点的HTML并将其打印出来

Php 获取父节点的HTML,包括子节点的HTML并将其打印出来,php,Php,例如,在我的HTML中,我有“img”标记。 我想把它们打包成“a”标签 如果我这样做一次,一切都很好。但下一次,已经包装好的标签,再次包装,它就坏了。我想了解的是“img”是否已经打包到“a”中 为此,我可以使用以下 $doc = new DOMDocument(); $doc->loadHTML($article_header); $imgs = $doc->getElementsByTagName('img'); foreach ($imgs as $img) { ????

例如,在我的HTML中,我有“img”标记。 我想把它们打包成“a”标签

如果我这样做一次,一切都很好。但下一次,已经包装好的标签,再次包装,它就坏了。我想了解的是“img”是否已经打包到“a”中

为此,我可以使用以下

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

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {

?????

}

因此,我将通过这个获得“img”标签。现在,如何获取“img”的父节点并检查它是否为“a”?

您可以在
foreach
循环的主体中尝试类似的代码

if ($img->parentNode->tagName == 'a') {
   continue;
}

显然,要确保这是第一件事:)

以下方法可能会奏效

foreach ($imgs as $img) {

    if(!$img.packed) {
       .... //packing code
       $img.packed = true;
    }

}

将是:

if ($img->parentNode->tagName == "a") { ... }

也许得到“a”,看看它是否包含图像这个东西必须在文章编辑器中工作,我有图像必须用“a”标记覆盖。因此,我必须先检查“img”标签。请将您的编辑还原到此问题,否则您的问题可能会被关闭为此问题的副本。编辑之前的问题得到了很好的答案,因此更改它不是一个好主意/建议。你是对的,我已将2个答案标记为解决方案,让我们关闭此问题,因为我已开始新的不同问题以继续处理此问题。关闭它们两个我已选择不同的一个。这个问题已经回答了,并且还可以。现在,另一个问题是,您的代码可以正常工作,我使用它如下>如果($img->parentNode->tagName!=“a”){但是如何给preg_match_所有这个对象?我的意思是如果我直接给$img,它就不能使用它,即使echo$img也不给任何东西来代替使用
regex
,我建议你使用
$img->getAttribute(“src”)
,你就有了图像源代码。问题是我想使用regex,我想在php变量中包含整个“img”标记。我想要这个,正是因为接下来的步骤。你能帮我把数据传输到regex吗?我想要整个img标记被传输。我注意到你更改了问题的标题。如果你想得到一个节点值,你可以使用
$node->nodeValue
。OP询问如何确定
img
标记的父节点是一个
a
标记。要使您的答案与问题相关,您需要提供确定
$img.packed的值所需的代码。[sic;PHP语法使用
->
,而不是
进行间接寻址]@Phoenix:我没有注意到它是PHP,我想当时它是用javascript标记的,我就这么做了。可惜我没有注意到它的语法。