1

我使用 simple_html_dom.php

我想删除元素的第一个子元素:

的HTML:

<div id="result">
<a class="result_type1" href="#">The title</a>
<span class="item">item</span>
<span class="more">more</span> 
<span class="description">description</span>
</div>

PHP 测试 1:

  foreach($html2->find("div[id=result]") as $element) 
 {


$element->children(0)->outertext=$element->children(1)->outertext;
$element->children(1)->outertext=$element->children(2)->outertext;
$element->children(2)->outertext=$element->children(3)->outertext;
$element->children(3)->outertext="";

echo $element->children(0)->plaintext; 

}

结果(不好):

     The title

PHP 测试 2

  foreach($html2->find("div[id=result]") as $element) 
 {

$element->children(0)->outertext=$element->children(1)->outertext;
$element->children(1)->outertext=$element->children(2)->outertext;
$element->children(2)->outertext=$element->children(3)->outertext;
$element->children(3)->outertext="";

echo $element->children(0)->outertext; 

}

结果(好):

       <span class="item">item</span>

而且我没有得到相同的项目。使用纯文本,我得到了应该删除的元素

4

1 回答 1

1

处理信息时,这三个属性(外部文本、内部文本和明文)似乎是分开的,存储在多维数组中:

如果使用“outerText”对元素进行更改,其他两个属性不会更改:

element1    plaintext: "text 1",
            outerText: "<span> text 2 </ span>",
            InnerText: "text 1"
         

如果您使用“纯文本”进行更改,则相同。

element1    plaintext: "text 2"
            outerText: "<div> text 1 </ div>",
            InnerText: "text 1" .

只有“InnerText”属性会影响其他两个属性...

element1    plaintext: "text 2"
            outerText: "<div> text 2 </ div>",
            InnerText: "text 2"                   

相反,如果您使用“href”更改元素,它将影响“outertext”值。

element1    href :     "link2",
            outerText: "<a href="link2"> </a>",

与“outerText”相反的变化不会影响“href”。

element1    href :     "link1",
            outerText: "<a href="link2"> </a>",
于 2015-04-13T03:11:49.833 回答