cURL を使用して RSS フィードのリストをスクレイピングし、SimpleXML を使用して RSS データを読み取って解析しています。次に、ソートされたデータが mySQL データベースに挿入されます。
ただし、http://dansays.co.uk/research/MNA/rss.phpに記載されているように、文字が正しく表示されないという問題がいくつかあります。
例:
âGuitar Hero: Van Halenâ Trailer And Tracklist Available
NV 10/10/09 – Salt Lake City, UT 10/11/09 – Denver, CO 10/13/09 –
データベースに挿入する前に、データに htmlentities と htmlspecialchars を使用してみましたが、問題の解決には役立たないようです。
私が抱えているこの問題をどのように解決できますか?
アドバイスをありがとう。
更新しました
グレッグが提案したことを試しましたが、問題はまだここにあります...
PDOでSET NAMESを実行するために使用したコードは次のとおりです。
$dbh = new PDO($dbstring, $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query('SET NAMES "utf8"');
simplexml データを並べ替えてデータベースに挿入する前に、少しエコーを行いましたが、cURL と関係があると思います...
ここに私がcURLのために持っているものがあります:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
$data = curl_exec($ch);
curl_close($ch);
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA);
問題は解決された
この問題を解決するには、RSS/HTML ページのコンテンツ文字セットを「UTF-8」に設定する必要がありました。char の問題がまだ生データに残っているため、これは本当の修正ではないと思います。PHP6 で適切にサポートされることを楽しみにしています!