2013-02-14 215 views
0

好吧,標題是模糊的,但我不知道如何說出這個。php在使用SimpleHTMLDOM呈現之前呈現頁面的內容

我想要做的是解析渲染之前整個頁面內容,然後選擇使用Simple HTML DOM PHP的頁面一定的股利和渲染,而不是整個頁面,如果頁面的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的內容?並且這會首先渲染頁面?

任何人都可以幫助我嗎?

回答

1

您可以使用建議的​​,以更清潔的方式獲得此選項。通過適當使用核心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; 
     } 
?> 
+0

比我的回答容易得多,效率也更高! – Ricki 2013-02-27 18:18:02

1

嘗試使用ob_startob_get_clean :)

ob_start(); 

echo "Hello World"; 

$html = ob_get_clean(); 

現在$html將包含"Hello World"ob_start();需要在您的代碼的開頭,並且ob_get_clean();您想停止收集內容。

+0

我已經看過'ob_start',但沒想到它會工作,任何指向教程的鏈接? – Ricki 2013-02-14 18:42:21

+0

請參閱ob_get_clean中的示例。這解決了您獲取頁面的HTML代碼的問題。 – MarcinWolny 2013-02-14 18:44:22

+0

我看,從看手冊,我不認爲這是相當我即時尋找,因爲我可以得到的HTML。但使用'ob_start'可能會朝着正確的方向 – Ricki 2013-02-14 18:47:02

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也可以提供幫助!