我有一个来自CURL Request的输出,它是一个包含完整html页面内容的字符串,我想提取特定的元素文本。
这是CURL代码:
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$contents = curl_exec($curl);
curl_close($curl);
此变量$contents
包含完整字符串。
我想从这个html元素中获取文本:
<strong class="textVal">
//Some Text That I Want To Extract.
</strong>
这个元素在字符串中存在一次,如何得到它?
答案 0 :(得分:3)
由于有一个php标签,我不推荐使用正则表达式来解析html。您应该使用DOMDocument
类来执行此任务:
$contents = '<strong class="textVal">
//Some Text That I Want To Extract.
</strong>';
$d = new DOMDocument();
$d->loadHTML($contents);
foreach($d->getElementsByTagName("strong") as $strong) {
echo $strong->nodeValue;
}
或者,您可以使用DOMXpath
与DOMDocument
一起提取innerHTML
.textVal
:
$contents = '<strong class="textVal">
//Some Text That I Want To Extract.
</strong>';
$dom = new DOMDocument();
$dom->loadHTML($contents);
$path = new DOMXpath($dom);
$xp = $path->query('//strong[@class="textVal"]');
echo $xp->item(0)->nodeValue;