0

DocumentDOM / SimpleXMLメソッドを実行しようとすると、問題は1つのファイルでのみ発生するため、問題はそのファイルにあるようです。それが何であるか見当がつかない。

私が次のことをした場合:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);

print_r($xml);

Chromeでは、「ページが利用できません」というエラーが表示されます。Firefoxでは何も得られません。

同じことを「test2.html」に対して行うと、期待どおりに印刷されます。

私が同じことを試みたが、このようにした場合:

$file = "test1.html";
$data = file_get_contents($file)
$dom = DOMDocument::loadHTML($data);
$xml = simplexml_import_dom($dom);

print_r($xml);

同じ問題が発生します。

print_r行をコメントアウトすると、Chromeは「ページが利用できません」から空白になります。

権限を777に変更しました。これが問題であった場合は、修正されません。

HTMLの内容を単純にエコーアウトしてみましたが、まったく問題ありませんでした。

a)Chromeがそれを行う理由、およびb)使用可能な結果が得られない理由に関する手がかりはありますか?


アップデート:

私が入れた場合:$ file = "test1.html"; $ dom = DOMDocument :: loadHTMLFile($ file); if(!$ dom){echo "No Load!"; } else {$ xml = simplexml_import_dom($ dom); print_r($ xml); }

同じ問題が発生します。私が入れた場合:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
if(!$dom) {
    echo "No Load!";
}
else {
    echo "Load!";
}

「ロード!」出力、つまりdomメソッドが問題になることはないはずです(?)

simplexmlを使用して同じ正確なテストを試してみます。


Update2:

私がこれを行う場合:

同じ問題が発生します。私が入れた場合:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
}

「ロード!」しかし、私がそうする場合:

$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
    echo "No Load!";
}
else {
    echo "Load!";
    print_r($xml);
}

エラーが発生します。Chromeでエラーを表示するオプションがあることにようやく気づきました。

 Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.

面倒なhtmlファイルは288Kbです。それが問題になるのでしょうか?もしそうなら、私はそれをどのように調整しますか?


最後の更新:

非常に奇妙な。オブジェクトのメソッドと関数を(simplexmlまたはdomdocumentとして)使用できるので、xpathなどを実行してhtmlを削除または解析できます。場合によっては(小さな結果)、結果をエコーアウトできますが、大きなもの(すべてのスパンを表示)、同じように失敗します。

したがって、最終結果から、これらのパラメーターに適合すると思います。大丈夫である必要があります(私は推測します)。

しかし、実際の解決策は大歓迎です。

4

2 に答える 2

1
  • error_reporting(E_ALL);PHPコードの最初の行でエラーレポートをオンにします。
  • PHP構成のメモリ制限を確認してください:memory_limitそれぞれのphp.iniで
  • test1.htmlとtest2.htmlの違いは何ですか?おそらく、test1.htmlは整形式ではありません。
于 2009-06-25T06:34:29.970 に答える
0

ドキュメントの形式が正しくない場合、DocumentDOMやSimpleXMLが無効になる可能性があります。次のようなものを試してください:

$dom = DOMDocument::loadHTMLFile($file);
if (!$dom) {
    echo 'Loading file failed';
    exit;
}

$xml = simplexml_import_dom($dom);
if (!$xml) {
    ...
}

$ domの作成が機能した場合は、$ xmlへの変換も機能するはずですが、とにかく確認してください。

編集:ゲーリックが言ったように、エラー報告がオンになっていることを確認してください。これにより、プロセスが失敗した場所が明確になります。

于 2009-06-25T06:38:02.550 に答える