0

リモートWebisteのタイトルを取得する場合は、次のスクリプトを使用します。

function get_remotetitle($urlpage) {
    $file = @fopen(($urlpage),"r");
    $text = fread($file,16384);
    if (preg_match('/<title>(.*?)<\/title>/is',$text,$found)) {
        $title = $found[1];
    } else {
        $title = 'Title N/A';
    }
    return $title;
}


しかし、アクセント付きのWebisteタイトルをパレードすると、「�」が表示されます。しかし、PHPMyAdminを見ると、アクセントが正しく表示されています。何が起こっていますか?

4

5 に答える 5

0

問題は、テキストのエンコーディングが、表示しているページで使用しているものとは異なることです。

あなたがしたいのは、データのエンコーディングが何であるかを調べ(たとえば、テキストを取得するページが使用しているエンコーディングを調べることによって)、それを自分で使用しているエンコーディングに変換することです。

実際の変換を行うには、iconv(一般的な場合)、utf8_decode(UTF8-> ISO-8859-1)、utf8_encode(ISO-8859-1-> UTF8)、またはmb_convert_encodingを使用できます。

ソースページのエンコーディングを確認するために、たとえば、エンコーディングを自動的に検出するw3cValidatorを介してWebサイトを配置できます。

エンコーディングを自動的に決定する方法が必要な場合は、HTML自体を確認する必要があります。選択した文字セットを判別する方法は、HTML4仕様で使用できます。

さらに、エンコーディングの詳細については、すべてのソフトウェア開発者が絶対に、Unicodeと文字セット(言い訳なし!)について絶対に知っておく必要がある絶対最小値を確認する価値があります。

于 2010-04-17T13:00:14.553 に答える
0

これはおそらく文字エンコードの問題です。おそらく文字を正しく取得していますが、それを表示するページの文字エンコードが間違っているため、正しく表示されません。

于 2010-04-17T13:00:29.207 に答える
0

これを試して:

echo iconv('UTF-8', 'ASCII//TRANSLIT', $title);
于 2010-04-17T13:01:06.733 に答える
0

PHP Simple HTML DOM Parserをチェックしてください

次のように使用します。

$html = file_get_html('http://www.google.com/');
$ret = $html->find('title', 0);
于 2010-04-17T13:47:34.410 に答える
0

私はそれを解決しました。htmlentities($text)アクセントなどを追加して表示するようになりました。

于 2010-04-17T14:07:06.837 に答える