在 PHP 中使用 domDocument 获取部分文本

Get part go text with domDocument in PHP

我这个 HTMl 来自 file_get_contents:

<div class="attractions-attraction-filtered-common-ListingsHeader__listingsCount--PflJ1">
    <span>We found <b>10&nbsp;results</b> for you.</span>
</div>

我怎样才能得到结果的数量(即:10)?

请注意,PflJ1 部分是随机的。

这是我试过的:

$page = file_get_contents($url);

$dom = new DOMDocument();
$dom->loadHTML($html);
$xp = new DOMXpath($dom);

$activitiesNb = $xp->query('//div/span/text()');
$activitiesNb = $activitiesNb->nodeValue;
echo $activitiesNb;

但是不行。

请问我缺少什么?

谢谢。

使用evaluate():

$results = $xp->evaluate('string(//span[contains(., "We found ")]/b/text())');

您的 XPath 需要修复(您正在查找 b 元素的内容)。此外,将 item()nodevalue 结合使用。

<?php
$html = <<<'HTML'
<div class="attractions-attraction-filtered-common-ListingsHeader__listingsCount--PflJ1">
    <span>We found <b>10&nbsp;results</b> for you.</span>
</div>
HTML;
$document = new DOMDocument();
$document->loadHTML($html);
$xpath = new DOMXpath($document);

$res = $xpath->query('//div[starts-with(@class,"attractions-")]/span/b');
$val = $res ->item(0)->nodeValue;
echo substr($val,0,2)
?>

输出:10

选择:

$res = $xpath->evaluate("substring(//div[starts-with(@class,'attractions-')]/span/b,1,2)");
echo $res

如果您只有一个号码(例如 8):

echo substr($val,0,1)

$res = $xpath->evaluate("substring(//div[starts-with(@class,'attractions-')]/span/b,1,1)");
echo $res