0

この URL: http://www.chromeball.comのコンテンツを取得しようとしましたが、文字エンコーディングがうまくいきません。

私はこのコードを持っています:

$url = 'http://www.chromeball.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);


$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);  
$nodes = $xpath->query('//text() | //@alt | //@title | /html/head/meta[@name="description"] | /html/head/meta[@name="keywords"]');
foreach($nodes as $node) {
  $textNodeContent .= " ".$node->nodeValue;
}

$enc = mb_detect_encoding($textNodeContent,'iso-8859-2,iso-8859-1,utf-8');
print  iconv($enc,'utf-8//TRANSLIT',$textNodeContent);

しかし、これは機能しません。文字コードが間違っています。$textNodeContent を utf-8 に変換するにはどうすればよいですか? ありがとう。

4

2 に答える 2

0

mb_detect_encodingページのコメントから、関数が特に信頼できないように見えます。Chrigu (2005 年 3 月 29 日 03:32 の投稿を参照)UTF-8は、リストの最初の文字エンコーディングとして配置することを提案しています。

$enc = mb_detect_encoding($textNodeContent,'utf-8,iso-8859-2,iso-8859-1');

試してみたところ、コンテンツが UTF-8 として表示されるようになりました。ただし、ISO-8859-1 コンテンツで試したところ、UTF-8 としても検出されます...

于 2010-07-10T18:20:44.210 に答える
0

次のように DOM を初期化します。

$dom->loadHTML('<?xml encoding="UTF-8">' . $data);
于 2010-07-10T18:35:34.643 に答える