人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

携帯の検索サイトを作成しています。
検索結果を"お気に入り登録"する機能をつけたいと思い、「登録ボタン」を押すと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ファイルを携帯で読み込むと問題なく読み込めるため携帯での保存が問題だと思うのですが、どう対処したら良いかわからず、困っています。よろしくお願いします。


●質問者: lily0717
●カテゴリ:インターネット ウェブ制作
✍キーワード:28 ON PHP URL UTF-8
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● yamaneroom
●35ポイント

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


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

<?xml version="1.0" encoding="utf-8" ?>
◎質問者からの返答

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

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');

}

}


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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ