php - PHP保存p标签的内部html,页面上只有1个p标签
问题描述
我正在尝试获取<p>
标签的内部 html 并将其保存为 .txt 文件。这是一个非常简单的页面;上面只有一个<p>
。我尝试getElementsByTagName('p')
按以下方式使用:Using PHP to get 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 Catchable 致命错误(第 11 行)
这些错误听起来相当惊人,尤其是最后一个。
问题:getElementsByTagName()
除了我只处理一个之外,我可以使用更好的工具<p>
吗?或者如果我调整一些东西,这种方式可以工作吗?
解决方案
如果只有一个 P 标签,我认为您最好使用正则表达式提取 P 内容
例子:
preg_match("/<p>(.*?)<\/p>/is",$dataPage,$match);
print_r($match[1]);
推荐阅读
- swift - swift 4 在 UIRefeshControl 之前清空 UITableView
- javascript - 如何将徽标添加到具有 CSS/HTML/JS 和引导程序的网站
- bash - 在 OSX 中展平文件结构时自动覆盖
- spring-boot - “我需要一个类型的 bean”错误:Spring-boot
- windows - 在用户开始菜单 CSIDL_STARTMENU 中创建快捷方式的正确方法
- c# - c#大双打比较
- javascript - 导入不带转义引号的 csv javascript
- python - Pandas 过滤数据框以获取正值和负值
- r - 在 R 中找到零交叉
- ruby-on-rails - Ruby on Rails:“必需:true”不工作