无法编辑file_get_html的字符串?

时间:2015-01-25 12:06:03

标签: php parsing simple-html-dom

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

<?php

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

    //Target URL
    $url = 'http://stackoverflow.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内容中添加了一个空格(以后,我需要编辑这个字符串,所以我只是在这里添加一个空格来简化事情)。

<?php

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

    //Target URL
    $url = 'http://stackoverflow.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');

2 个答案:

答案 0 :(得分:1)

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

如果要修改页面内容,请使用对象为您提供的DOM API。

答案 1 :(得分:1)

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

如果你想按照你所描述的那样去读取文件内容并首先连接额外的字符串:

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

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