获取下一个兄弟节点 value/text returns 空字符串
getting next sibling node value/text returns empty string
我试图从一些 url 获取数据,这个 url 包含一堆 h3
标签,每个标签后跟一个 p
标签....我想循环抛出 h3 标签,打印它们中的每一个并跳到下一个元素( p )并打印它......基本上我想打印 h3=>p
对
$doc = new \DOMDocument('1.0', 'UTF-8');
$prologue = '<?xml encoding="UTF-8">';
$doc->loadHTML($prologue.$page);
$finder = new \DOMXPath($doc);
$nodes = $finder->query("//*[contains(@class, 'td-post-content td-pb-padding-side')]");
$hList = $nodes[0]->getElementsByTagName('h3');
foreach ($hList as $k=>$h )
{
$text = $h->nodeValue ;
dump( 'h3->' , $text);
$p = $h->nextSibling ;
dump( 'p->' , $p->nodeValue);
}
这里有一个例子link
这是我的输出
如您所见,p 标签出于某种原因是一个空字符串,但在源代码中您可以看到下一个元素 (p) 及其 value/text
感谢@CBroe 的评论,我是这样做的
$hList = $nodes[0]->getElementsByTagName('h3');
foreach ($hList as $k=>$h )
{
$h_text = $h->nodeValue ;
dump($h_text);
$current_el = $h ;
$current_nodeName = $current_el->nodeName ;
while ($current_nodeName != 'p')
{
$current_el = $current_el->nextSibling ;
$current_nodeName = $current_el->nodeName ;
}
$p_text = $current_el->nodeValue;
dd($p_text);
}
我试图从一些 url 获取数据,这个 url 包含一堆 h3
标签,每个标签后跟一个 p
标签....我想循环抛出 h3 标签,打印它们中的每一个并跳到下一个元素( p )并打印它......基本上我想打印 h3=>p
对
$doc = new \DOMDocument('1.0', 'UTF-8');
$prologue = '<?xml encoding="UTF-8">';
$doc->loadHTML($prologue.$page);
$finder = new \DOMXPath($doc);
$nodes = $finder->query("//*[contains(@class, 'td-post-content td-pb-padding-side')]");
$hList = $nodes[0]->getElementsByTagName('h3');
foreach ($hList as $k=>$h )
{
$text = $h->nodeValue ;
dump( 'h3->' , $text);
$p = $h->nextSibling ;
dump( 'p->' , $p->nodeValue);
}
这里有一个例子link
这是我的输出
如您所见,p 标签出于某种原因是一个空字符串,但在源代码中您可以看到下一个元素 (p) 及其 value/text
感谢@CBroe 的评论,我是这样做的
$hList = $nodes[0]->getElementsByTagName('h3');
foreach ($hList as $k=>$h )
{
$h_text = $h->nodeValue ;
dump($h_text);
$current_el = $h ;
$current_nodeName = $current_el->nodeName ;
while ($current_nodeName != 'p')
{
$current_el = $current_el->nextSibling ;
$current_nodeName = $current_el->nodeName ;
}
$p_text = $current_el->nodeValue;
dd($p_text);
}