php在使用SimpleHTMLDOM渲染之前抓取页面的内容

时间:2013-02-14 18:38:08

标签: php simple-html-dom

好的,标题含糊不清,但我不知道怎么说这个。

我想要做的是在渲染之前解析整个页面,然后使用Simple HTML DOM PHP从页面中选择某个div,如果页面的header匹配,则渲染而不是整个页面通过if(isset($_SERVER[]致电

麻烦的是,我不知道该怎么做,我无法使用PHP选择当前页面(使用$_SERVER[]?)。我甚至不知道我是否有意义。

说我们从外部库的工作原理开始:

$html = file_get_html(''); // Get HTML of this page.. somehow
$div = $html->find('div[id=mainContent]'); // or 'div#mainContent'

但是如何回应该div的内容呢?这将首先呈现页面吗?

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

尝试将ob_startob_get_clean一起使用:)

ob_start();

echo "Hello World";

$html = ob_get_clean();

现在$html将包含"Hello World"ob_start();需要位于代码的开头,而ob_get_clean();则需要停止收集内容。

答案 1 :(得分:1)

您可以按照建议使用ob_get_contents以更干净的方式获取此信息。通过适当使用核心PHP指令和包含,您可以实现它,这样您就不必触及的所有现有的PHP文件!

<?php
    // This goes before the page, and this can be done automatically (i.e. without
    // modifying the existing PHP file) using auto prepend:
    // http://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file
    ob_start();
?>

// The "old" page ...

<?php
    // This goes after the page, and again can be done automatically using
    // auto append (see above).
    // This 'if' can also check whether this page is one of those that must be
    // manipulated, or not.
    if(!isset($_SERVER['EXAMPLE_HEADER']) || ('false'==$_SERVER['EXAMPLE_HEADER']))
    {
        $html = ob_get_clean();

        // Include is only necessary in this scope -- full path may be needed, though
        include_once('simple_html_dom.php');

        // Here, $html is parsed to yield a DOM object
        // ...

        foreach($dom->find('div[id=mainContent]') as $div)
        {
            echo $div->innertext;
        }
?>

答案 2 :(得分:0)

我做了一个示例页面:

<?php 
include_once('simple_html_dom.php');

if(!isset($_SERVER['EXAMPLE_HEADER']) && $_SERVER['EXAMPLE_HEADER'] == 'false'){ ?>

<html>
<head></head>
<body></body>
</html>

<?php 
}else{
$html = file_get_html('thispage.html');
foreach($html->find('div[id=mainContent]') as $div) {
echo $div->innertext;
} ?>

显然,示例html代码应该是您的页面。因此页面会询问是否发送了标题,如果没有,它会像往常一样显示页面,如果是,它将在页面中搜索特定的div(在本例中为mainContent)并显示该页面。

我猜这会对别人有所帮助。但使用ob_start也可以提供帮助!