在 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 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 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
我这个 HTMl 来自 file_get_contents
:
<div class="attractions-attraction-filtered-common-ListingsHeader__listingsCount--PflJ1">
<span>We found <b>10 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 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