我正在尝试获取<p>
标签的内部html并将其另存为.txt文件。这是一个非常简单的页面;上面只有一个<p>
。我尝试按照以下内容使用getElementsByTagName('p')
:使用PHP获取DOM Element。不幸的是,它对我不起作用,但也许我错过了一些东西。我的代码是:
<?php
$dataPage = file_get_contents('http://www.somedataurl.com');
$doc = new DOMDocument;
$doc->loadHTML($dataPage);
$dataNodeList = $doc->getElementsByTagName('p');
$dataNode = $dataNodeList->item(0);
function innerHTML($node) {
return implode(array_map([$node->ownerDocument, "saveHTML"],
iterator_to_array($node->childNodes)));
}
$theData = innerHTML($dataNode);
header('Content-Type: text/plain');
$filename = date('Y-m-d') . '.txt';
file_put_contents($filename, $theData);
错误日志给我:
PHP 通知:未定义属性:: DOMNodeList(第 10 行(
PHP 通知:未定义属性:: DOMNodeList(第 11 行(
PHP 可捕获的致命错误(第 11 行(
这些错误听起来相当令人担忧,尤其是最后一个错误。
问题:除了getElementsByTagName()
之外,我可以使用更好的工具吗,因为我只处理一个<p>
?或者如果我调整一些东西,这种方式可以工作吗?
如果只有一个 P 标签,我认为你最好使用正则表达式提取 P 内容
例:
preg_match("/<p>(.*?)</p>/is",$dataPage,$match);
print_r($match[1]);