首页 > 解决方案 > 尝试拆分 cURL 会话结果返回的 html 标记(curl_exec)

问题描述

所以我试图拆分 cURL 会话结果(curl_exec)返回的 HTML 标记。请帮忙

我试过的:

1 - preg_split

/* cURL initializations....*/
$result = curl_exec($ch);
$load_time = preg_split('//[@class="embedmain"]/.embedFooter/b', $result);
echo $load_time;

输出:False带有警告preg_split(): Unknown modifier '['

2 - 使用 DOMDocument 进行 HTML 解析

   /* cURL initializations....*/
   $result = curl_exec($ch);
   $doc = new DOMDocument;
   $doc->loadHTML($result);
   $xpath = new DOMXpath($doc);
   $node = $xpath->query('//[@class="embedmain"]/.embedFooter/b')->item(0);       
   $load_time = (isset($node->textContent) && strlen($node->textContent) > 1 ? $node->textContent : '0.0ms');
   echo $load_time;

输出:

Warning: DOMXPath::query(): Invalid expression
Warning: DOMXPath::query(): Invalid expression
Fatal error: Call to a member function item() on boolean

看起来 xpath 的查询无效。

标签: phpsplitphp-curl

解决方案


您不想将正则表达式用于这样的事情,也不想使用字符串函数。像你开始做的那样使用解析器和 xpath。

$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$bold = $xpath->query('//div[@class="embedmain"]/div[@class="embedFooter"]/b')[0]->nodeValue;
echo $bold;

https://3v4l.org/A91Em


推荐阅读