1

Simple HTML DOM Parserを使用して、ページ B からいくつかの html を抽出し、現在のページに html コードを挿入しようとしています。(優しくしてください、私はPHP初心者です)

ターゲットとしているページ B の html は次のようになります。 <div id="testdiv">B</div>

現在のページに同じコードを挿入する必要があります。

現在のページの私のPHP:

<?php
include_once '%resource(simple_html_dom.php)%';
$ret = Array();
$html = file_get_html('b.html');
$ret[] = $html->find('div[id=testdiv]', 0);
$ret->outertext = $ret->makeup() . $ret->innertext . '</div>';
echo $ret;
?>

私はこれをまとめようとしましたが、まだ運がありません. 現在のページを表示すると「B」が表示されると予想されますが、すべての html コーディングもそこに存在する必要があることは間違いありません;
)

PSそれが実行されたら、おそらくpg Bにあるcssとjsを取り込む方法が必要です.

助けてくれてありがとう、ビル

更新されたコード:

<?php
include_once '%resource(simple_html_dom.php)%';
$html = file_get_html('b.html');
foreach($html->find('div[id=testdiv]') as $ret)
  echo $ret;
?>

したがって、ページ B から特定の css および js ファイルを取得して、div 内のコンテンツが適切にレンダリングされるようにする必要があります。現在のページの例を次に示します。ページ B のヘッダーを見ると、b_files/stacks_page_page1.css & b_files/stacks_page_page1.js という典型的な css および js ファイルがあります。

これらは、必要に応じて相対パスを変更して、現在のページで参照する必要があるファイルです。フォルダーにあるページ C も追加したため (B は現在のページのルートにあります)、パスは異なります。css ファイルと js ファイルを一緒に組み合わせると良いと思いますので、大量の dom 呼び出しはありません。

全体として、これらのファイルを取り込むコードは何ですか?

4

3 に答える 3

1
foreach($html->find('div[id=testdiv]') as $content)
    echo $content;

結果は次のように<div id="testdiv">B</div> なり、ブラウザに次のように表示されます

B

コードを表示したい場合:

foreach($html->find('div[id=testdiv]') as $content)
    echo "<xmp>".$content."</xmp>";

実際の結果:<xmp><div id="testdiv">B</div></xmp>

次に、ブラウザのディスプレイで:

<div id="testdiv">B</div>
于 2012-10-11T21:32:43.213 に答える
1

$ret は配列であり、「makeup()」と呼ばれるメソッドがないため、「非オブジェクトでのメンバー関数makeup()の呼び出し」を取得しています。

あなたがやろうとしていることのすべてが正確にはわかりませんが、このようなことで少し近づくかもしれません. 文字列「< div>」を生成するmakeup()という名前の関数があると仮定しています。

未検証

<?
php include_once '%resource(simple_html_dom.php)%';  
$html = file_get_html('b.html'); 
$ret = $html->find('div[id=testdiv]', 0)->innertext; 
$ret = makeup() . $ret . '</div>'; 

echo $ret; 
?> 
于 2012-10-11T21:29:30.360 に答える
1

コードにはいくつかの問題があります。 $ret[]配列へのプッシュを意味しますが、次の行でオブジェクトメソッドを呼び出しているため、エラーが発生します。

その問題が修正$ret->makeupされると、API によると有効なメソッドではなくなります (変更/拡張していない限り)。で何をしていると思うかわかりません$ret->outertext = $ret->makeup() . $ret->innertext . '</div>'が、出力に期待Bしている場合:

<?php
include_once 'simple_html_dom.php';
$html = file_get_html('b.html');
$ret = $html->find('div[id=testdiv]', 0);
if ($ret) {
    echo $ret->innertext;
}
于 2012-10-11T21:29:41.067 に答える