PHP保存p标签的内部html,页面

时间:2018-05-16 02:31:23

标签: php

我正在尝试获取<p>标记的内部html并将其另存为.txt文件。这是一个非常简单的页面;它上面只有一个<p>。我按照Using PHP to get DOM Element尝试使用getElementsByTagName('p')。不幸的是,它对我不起作用,但也许我错过了一些东西。我的代码是:

<?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>吗?或者,如果我调整一些东西,这种方式可以工作吗?

1 个答案:

答案 0 :(得分:0)

如果只有一个P标签,我认为您最好使用正则表达式提取P内容

示例:

preg_match("/<p>(.*?)<\/p>/is",$dataPage,$match);
print_r($match[1]);