携帯の検索サイトを作成しています。

検索結果を"お気に入り登録"する機能をつけたいと思い、「登録ボタン」を押すとXMLファイル(okiniiri.xml)に保存し、"お気に入り"ページ(okiniiri.php)で表示するようにしたのですが、検索結果に「長」が含まれている場合下記のエラーが発生します。

例)検索結果が「川長」の時③で下記のエラーメッセージが表示される。
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: okiniiri.xml:3: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE9 0x95 0x3C 0x2F in 【サーバのURL】/okiniiri.php on line 28
Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: <favorite>川�</favorite> in 【サーバのURL】/okiniiri.php on line 28

search.phpの28行目はnew SimpleXMLElementでXMLファイルを読み込んでいます。同じ動作をパソコンで行うと問題なく動作するのですが、携帯(ドコモ)だとエラーが発生します。パソコンで保存したXMLファイルを携帯で読み込むと問題なく読み込めるため携帯での保存が問題だと思うのですが、どう対処したら良いかわからず、困っています。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/08/03 14:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:yamaneroom No.1

回答回数1040ベストアンサー獲得回数61

ポイント35pt

ソーススクリプトを見ないと確実な回答はできない。


そのXMLファイルは冒頭で、下記のようにXML宣言を行っているか?

<?xml version="1.0" encoding="utf-8" ?>
id:lily0717

ご回答、ありがとうございます。

XML宣言は行っています。

原因かな・・と思っている所としてはxmlファイルの書き込みの部分です。

(文字数制限に引っかかってしまったので、とりあえず書き込みの部分

のスクリプトを記載します。)

// 検索結果の書き込み

$favorite=urldecode($favorite);

if($favorite){

$xml_array=array();

$xml =new SimpleXMLElement('okiniiri.php', null, true);

$node_num=count($xml->favorite);

// XMLファイル内に検索結果の記述があるかチェック

while($node_num >= 1){

$node_num=$node_num-1;

$sxml_array[]=$sxml->favorite[$node_num];

}

// 記述がなかったら、書き込み

if(in_array($favorite,$sxml_array) === FALSE){

$sxml->addChild('favorite',$favorite);

$sxml->asXML('okiniiri.php');

}

}

2010/07/27 16:28:39
id:yamaneroom No.2

回答回数1040ベストアンサー獲得回数61

ポイント35pt
$xml =new SimpleXMLElement('okiniiri.php', null, true);

これはどう見てもおかしなコードだ。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません