不使用 foreach 就无法获取明文
Can't get the plaintext without using foreach
我正在尝试使用 simple_html_dom
获取一个 HTML 元素的纯文本 ('THIS TEXT'):
<div class="parent">
<span><i class="fa fa-awesome"></i>THIS TEXT</span>
</div>
我正在使用以下方式获取该文本:
foreach($html->find('div.parent span.child') as $text){
echo $text->plaintext;
}
但它只是一个元素,我正在寻找一种不使用 foreach
循环(因为它只是一个元素)来获取明文的方法。
P.S:我一直在尝试这个:
$html->find('div.parent span.child', 1);
但是 var_dump
-ing 结果是 NULL
。
我也试过这个:
$html->find('div.delivery-status span.status', 1)->plaintext;
但是 var_dump
-ing 结果是:
Notice: Trying to get property 'plaintext' of non-object in
C:\xampp\htdocs\curl\index.php on line 19
我也阅读了文档,但我似乎无法理解这一点:(。有人可以帮助我或者至少指出正确的方向吗?:-s
谢谢!:D
您使用的是一个非常古老的库,但看起来 foreach
循环正是作者希望它工作的方式。这对于 DOM 函数来说是典型的,return 大多数函数的节点列表。循环有什么问题?你也可以在普通的 PHP 中这样做:
$html = <<< HTML
<div class="parent">
<span><i class="fa fa-awesome"></i>THIS TEXT</span>
</div>
HTML;
$dom = new \DomDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$xpath = new \DOMXPath($dom);
$data = $xpath->query("//div[@class='parent']/span/text()");
echo $data[0]->textContent;
问题中的<span>
没有child
cssclass,所以你的选择器不正确。此外,您似乎遗漏了一点,即在调用 find 时,子项的索引是从零开始的。试试这个:
$str = '<div class="parent"><span><i class="fa fa-awesome"></i>THIS TEXT</span></div>';
$html = str_get_html($str);
// no .child for the span, and 0 as the index of target child
print $html->find('div.parent span', 0)->plaintext;
我正在尝试使用 simple_html_dom
获取一个 HTML 元素的纯文本 ('THIS TEXT'):
<div class="parent">
<span><i class="fa fa-awesome"></i>THIS TEXT</span>
</div>
我正在使用以下方式获取该文本:
foreach($html->find('div.parent span.child') as $text){
echo $text->plaintext;
}
但它只是一个元素,我正在寻找一种不使用 foreach
循环(因为它只是一个元素)来获取明文的方法。
P.S:我一直在尝试这个:
$html->find('div.parent span.child', 1);
但是 var_dump
-ing 结果是 NULL
。
我也试过这个:
$html->find('div.delivery-status span.status', 1)->plaintext;
但是 var_dump
-ing 结果是:
Notice: Trying to get property 'plaintext' of non-object in C:\xampp\htdocs\curl\index.php on line 19
我也阅读了文档,但我似乎无法理解这一点:(。有人可以帮助我或者至少指出正确的方向吗?:-s
谢谢!:D
您使用的是一个非常古老的库,但看起来 foreach
循环正是作者希望它工作的方式。这对于 DOM 函数来说是典型的,return 大多数函数的节点列表。循环有什么问题?你也可以在普通的 PHP 中这样做:
$html = <<< HTML
<div class="parent">
<span><i class="fa fa-awesome"></i>THIS TEXT</span>
</div>
HTML;
$dom = new \DomDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$xpath = new \DOMXPath($dom);
$data = $xpath->query("//div[@class='parent']/span/text()");
echo $data[0]->textContent;
问题中的<span>
没有child
cssclass,所以你的选择器不正确。此外,您似乎遗漏了一点,即在调用 find 时,子项的索引是从零开始的。试试这个:
$str = '<div class="parent"><span><i class="fa fa-awesome"></i>THIS TEXT</span></div>';
$html = str_get_html($str);
// no .child for the span, and 0 as the index of target child
print $html->find('div.parent span', 0)->plaintext;