如何从CURL输出中提取特定单词?

时间:2018-04-11 01:34:54

标签: php html regex curl libcurl

我有一个来自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>

这个元素在字符串中存在一次,如何得到它?

1 个答案:

答案 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;
}

或者,您可以使用DOMXpathDOMDocument一起提取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;