如何使用 SimpleHTMLdom 解析器解析没有 class 且没有 id 的 p 标签内容?
How to parse a p tag content with no class and no id using SimpleHTMLdom parser?
这是我要解析的 html 部分,以便在 <p>
中获取文本:
<div class="container">
<h2>title</h2>
<div class="divIdontNeed"> hi </div>
<p> I WANT THIS TEXT </p> <====== this is what i want
<p> i don't want this one </p>
</div>
我做的是一个循环(因为上面的 html 在多个页面上,我希望它们都在一个数组中 $allTexts
):
foreach($html->find('div[class=container]')->find('p',0) as $text){
array_push($allTexts, $text->plaintext);
}
当我这样做时,我收到一条错误消息 Fatal error: Call to a member function find() on array in /path/to/MyTextParser.php
谢谢大家
您收到错误是因为第一个 find()
returns 是一个元素数组,而不仅仅是一个元素。
您需要对第一个 find()
:
的结果进行循环
foreach($html->find('div[class=container]') as $element)
{
foreach ($element->find('p',0) as $text){
array_push($allTexts, $text->plaintext);
}
}
你应该选择你想要的第 n 个元素。
$divObj=$html->find('div.container', 0);
echo $divObj->find('p', 0)->plaintext; //you are choosing only first p tag
echo $divObj->find('p', 1)->plaintext; //you are choosing only second p tag
如果您需要来自 div 的所有 p 元素的文本,您需要执行 foreach
或
您可以选择它作为 div
的下一个同级 class divIdontNeed
$divObj=$html->find('div.divIdontNeed', 0)->next_sibling();
echo $divObj->plaintext;
这是我要解析的 html 部分,以便在 <p>
中获取文本:
<div class="container">
<h2>title</h2>
<div class="divIdontNeed"> hi </div>
<p> I WANT THIS TEXT </p> <====== this is what i want
<p> i don't want this one </p>
</div>
我做的是一个循环(因为上面的 html 在多个页面上,我希望它们都在一个数组中 $allTexts
):
foreach($html->find('div[class=container]')->find('p',0) as $text){
array_push($allTexts, $text->plaintext);
}
当我这样做时,我收到一条错误消息 Fatal error: Call to a member function find() on array in /path/to/MyTextParser.php
谢谢大家
您收到错误是因为第一个 find()
returns 是一个元素数组,而不仅仅是一个元素。
您需要对第一个 find()
:
foreach($html->find('div[class=container]') as $element)
{
foreach ($element->find('p',0) as $text){
array_push($allTexts, $text->plaintext);
}
}
你应该选择你想要的第 n 个元素。
$divObj=$html->find('div.container', 0);
echo $divObj->find('p', 0)->plaintext; //you are choosing only first p tag
echo $divObj->find('p', 1)->plaintext; //you are choosing only second p tag
如果您需要来自 div 的所有 p 元素的文本,您需要执行 foreach
或
您可以选择它作为 div
的下一个同级 class divIdontNeed
$divObj=$html->find('div.divIdontNeed', 0)->next_sibling();
echo $divObj->plaintext;