0

好的,标题很模糊,但我只是不知道如何措辞。

我想要做的是在渲染之前解析整个页面,然后使用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 的内容呢?这会首先呈现页面吗?

谁能帮我?

4

3 回答 3

1

尝试使用ob_startob_get_clean :)

ob_start();

echo "Hello World";

$html = ob_get_clean();

现在$html将包含"Hello World". ob_start();需要位于代码的开头,并且ob_get_clean();在您想停止收集内容的时刻。

于 2013-02-14T18:41:05.643 回答
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;
        }
?>
于 2013-02-14T20:29:30.540 回答
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也有帮助!

于 2013-02-14T20:18:58.107 回答