1

私の PHP スクリプトは Web サイトを解析し、次のような HTML DIV を引き出します (そして、文字列として保存します)。

<div id="merchantinfo">The following merchants: Nautica®, Brookstone®, Teds® ©2012 Blabla</div>

これを $merchantList (文字列) として保存します。

ただし、データをWebページに出力すると

echo $merchantList

エンコーディングがめちゃくちゃになり、次のように表示されます。

Nautica®, Brookstone®, Teds® ©2012 Blabla

表示ページに以下を追加してみました:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>

しかし、それは何もしませんでした。 - ありがとう

編集:: ------------

質問については、受け入れられた回答が正しいです。

しかし、実際の問題は少し異なることに気付きました。

DOMDocument::loadHTML を使用した最初の解析では、すでに UTF-8 エンコーディングが壊れていたため、文字列が次のように保存されていました。

<div id="merchantinfo">The following merchants: Nauticaî, Brookstoneî, Tedsî ©2012 Blabla</div>

これは次の方法で解決されました。

$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
$dom->loadHTML($html);
4

2 に答える 2

2

使用する:

ini_set('default_charset', 'UTF-8');

また、iso-8859-1 は使用しないでください。UTF-8 を使用します。

投稿したモジバケから、入力文字列は iso-8859-1 ではなく utf-8 です。

于 2012-07-19T01:54:09.520 に答える
0

htmlspecialchars_decode関数を使用するだけで済みます。例:

$string = '&quot;hello dude&quot;';
$decodechars = htmlspecialchars_decode($string);
echo $decodechars; // output : "hello dude"
于 2015-12-30T16:38:51.697 に答える