好的,标题含糊不清,但我不知道怎么说这个。
我想要做的是在渲染之前解析整个页面,然后使用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的内容呢?这将首先呈现页面吗?
任何人都可以帮助我吗?
答案 0 :(得分:1)
尝试将ob_start与ob_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
也可以提供帮助!