file_get_html 的字符串无法编辑?

String of file_get_html can't be edited?

考虑这段简单的代码,使用 PHP 简单 HTML DOM 解析器正常工作,它输出 当前社区

<?php

    //PHP Simple HTML DOM Parser from simplehtmldom.sourceforge.net
    include_once('simple_html_dom.php');

    //Target URL
    $url = 'http://whosebug.com/questions/ask';

    //Getting content of $url
    $doo = file_get_html($url);

    //Passing the variable $doo to $abd
    $abd = $doo ;

    //Trying to find the word "current community"
    echo $abd->find('a', 0)->innertext; //Output: current community. 

?>

考虑另一段代码,与上面相同,但是我在解析的 html 内容中添加了一个空的 space (将来,我需要编辑这个字符串,所以我只添加了space 这里是为了简化事情)。

<?php

    //PHP Simple HTML DOM Parser from simplehtmldom.sourceforge.net
    include_once('simple_html_dom.php');

    //Target URL
    $url = 'http://whosebug.com/questions/ask';

    //Getting content of $url
    $doo = file_get_html($url);

    //Passing the variable $url to $doo - and adding an empty space.
    $abd = $doo . " ";

    //Trying to find the word "current community"
    echo $abd->find('a', 0)->innertext; //Outputs: nothing.     
?>

第二个代码给出了这个错误:

PHP Fatal error:  Call to undefined function file_get_html() in /home/name/public_html/code.php on line 5

为什么我不能编辑从 file_get_html 获得的字符串?由于许多重要原因,我需要对其进行编辑(例如在处理页面的 html 内容之前删除一些脚本)。我也不明白为什么会出现 file_get_html() 找不到的错误(很明显我们从第一个代码导入了正确的解析器)。

补充说明:

我已经尝试了所有这些变化:

include_once('simple_html_dom.php');
require_once('simple_html_dom.php');
include('simple_html_dom.php');
require('simple_html_dom.php');

$doo 不是字符串!它是一个 对象 ,Simple HTML DOM 的一个实例。您不能在字符串上调用 -> 方法,只能在对象上调用。您不能将此对象视为字符串。试图将某些东西连接到它是没有意义的。 $abd 在您的代码中是一个对象与字符串连接的结果;这会导致字符串或错误,具体取决于对象的详细信息。它肯定不做的是产生一个可用的对象,所以你当然不能做 $abd->find().

如果你想修改页面的内容,使用对象给你的 DOM API 来做。

file_get_html() returns 一个对象,不是一个字符串。尝试将字符串连接到对象将调用对象的 _toString() 方法(如果存在),并且操作 returns 一个字符串。字符串没有 find() 方法。

如果你想按照你描述的那样做,请先阅读文件内容并连接额外的字符串:

$content = file_get_contents('someFile.html');
$content .= "someString";
$domObject  = str_get_html($content);

或者,使用 file_get_html() 读取文件并使用 DOM API 对其进行操作。