0

PHP の DOMDocument オブジェクトを使用して HTML (cURL で取得) を解析しています。ID で要素を取得して出力すると、空の<span> </span>タグは追加の文字を取得して になり<span>Â </span>ます。

コード:

<?php
    $document = new DOMDocument();
    $document->validateOnParse = true;

    $document->loadHTML( curl_exec($handle) );
    curl_close($handle);

    $element = $document->getElementById( __ELEMENT_ID__ );

    echo $document->saveHTML(); 
    echo $document->saveHTML($element);
?>

コマンドは期待どおりに動作し、$document->saveHTML()ページ全体を印刷します。しかし、上で言ったように、echo $document->saveHTML($element)コマンドで空の<span>タグを に変換し<span>Â </span>ます。

これは、<span> </span>内のすべてのタグで発生します$element

この余分な文字を挿入しているのは、このプロセス (ID で要素を取得して要素を出力するプロセス) の何ですか? 私はそれを回避できますが、根本に到達することにもっと興味があります。

4

1 に答える 1

0

ページの文字エンコーディングを設定することで問題を解決できました。フェッチしていたページには文字エンコーディングが定義されておらず、ページはヘッダー情報が定義されていない単なるスニペットでした。追加したところ

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

問題は消えました。

于 2012-11-30T18:44:53.440 に答える