PHP 从 div 获取第一个孩子

Dol*_*rma 1 php domdocument

在下面的 HTML 代码中,我想获取以下内容p tag

例子

<div class="body" style="text-align: justify;padding: 10px;">
   <p style="text-align: justify;" dir="RTL">
      ...............
   </p>

   TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST 
</div>
Run Code Online (Sandbox Code Playgroud)

我当前的代码是:

$dom = new DOMDocument;
$dom->loadHTML($content);

echo $dom->getElementsByTagName('div')->item(0)->childNodes;
Run Code Online (Sandbox Code Playgroud)

为什么此代码不正确以及如何解决此问题。

Ele*_*ace 5

有趣的:

如果你有这个:

<?php
$content ='
<div class="body" style="text-align: justify;padding: 10px;">
    <p>this is a paragraph</p>
    TEST TEST TEST TEST 
</div>';

$dom = new DOMDocument;
$dom->loadHTML($content);

$firstChildOfDiv = $dom->getElementsByTagName('div')->item(0)->childNodes->item(0);
$value = $firstChildOfDiv->nodeValue;
echo "<PRE>",var_dump($value),"</PRE>";
Run Code Online (Sandbox Code Playgroud)

你的输出将是:

string(1) " "

但是,如果你有这个:

<?php
$content ='
<div class="body" style="text-align: justify;padding: 10px;"><p>this is a paragraph</p> TEST TEST TEST TEST </div>';

$dom = new DOMDocument;
$dom->loadHTML($content);

$firstChildOfDiv = $dom->getElementsByTagName('div')->item(0)->childNodes->item(0);
$value = $firstChildOfDiv->nodeValue;
echo "<PRE>",var_dump($value),"</PRE>";
Run Code Online (Sandbox Code Playgroud)

您的输出将符合预期:

 string(19) "this is a paragraph"
Run Code Online (Sandbox Code Playgroud)

空白似乎发生了一些奇怪的事情

  • `childNodes-&gt;item(1)` 在第一个示例中应该是 world。`childNodes-&gt;item(0)` 引用 div 和 p 之间的 TextNode。TextNode 的文本内容是两者之间的空白。 (2认同)