0

OK、タイトルがあいまいですが、これをどのように表現すればよいかわかりません。

私がやりたいことは、レンダリングの前にページ全体を解析し、S​​imple HTML DOM PHP を使用してページから特定の div を選択し、ページ全体代わりにそれをレンダリングすることです。headerif(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_get_cleanでob_startを使用してみてください:)

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 に答える