php - 来自 <p> 标签的文本使用 DOM Php

标签 php dom

嘿, 考虑我有以下 html 语法

<p>xyz</p>
<p>abc</p>

我想使用 DOM 检索文本(xyz 和 abc)。

这是我的代码。

<?php
$link='http://www.xyz.com';
$ret= getLinks($link);
print_r ($ret);

function getLinks($link)
{
    /*** return array ***/
    $ret = array();

    /*** a new dom object ***/
    $dom = new domDocument;

    /*** get the HTML (suppress errors) ***/
    @$dom->loadHTML(file_get_contents($link));

    /*** remove silly white space ***/
    $dom->preserveWhiteSpace = false;

    /*** get the links from the HTML ***/
    $text = $dom->getElementsByTagName('p');

/*** loop over the links ***/
    foreach ($text as $tag)
    {
        $ret[] = $tag->innerHTML;
    }

    return $ret;
}
?>

但我得到的结果是空的。我在想什么?

最佳答案

要抑制解析错误,请不要使用

@$dom->loadHTML(file_get_contents($link));

但是

libxml_use_internal_errors(TRUE);

此外,没有理由使用 file_get_contents . DOM 可以从远程资源加载。

libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile($link);
libxml_clear_errors();

此外,标记名称区分大小写。您正在查询 <P>当片段包含 <p> .改为

$text = $dom->getElementsByTagName('p');

最后,没有 innerHTML .获取它的用户空间解决方案在

您可以获取 outerHTML

$ret[] = $dom->saveHtml($tag); // requires PHP 5.3.6+

$ret[] = $dom->saveXml($tag); // that will make it XML compliant though

获取P标签的文本内容,使用

$ret[] = $tag->nodeValue;

关于php - 来自 <p> 标签的文本使用 DOM Php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971373/

相关文章:

php - 如何通过php过滤任意给定数量的html标签

javascript - 如何遍历 jquery.map 的输出?

javascript - 使用 Vanilla Javascript 更改基于浏览器宽度的文本框的对齐方式

javascript - 向 DOM Element 对象添加属性有什么问题?

php - 在 javascript 中快速 URL 加密,在 php 中解密

javascript - 如何在ajax中使用点击链接时的回调函数

PHP group mysql select by 两列

php - 构造单例类(class)

php - 如何将这些字符串从 php 传递到 javascript

javascript - Javascript 循环内的事件处理程序 - 需要闭包吗?