レンタルサーバーのPHP4が使えなくなってしまうので、PHP4からPHP5への移行を行っています。

PHP4で問題なく動いていた、
xml_parse_into_struct($parser,$xml_doc,$vals,$index) or exit(xml_error_string(xml_get_error_code($parser)));
という行で、xml_parse_into_struct()がエラーになっているようです、exit以下の処理で、
>required という文字が返ってきます。
PHPのことがあまりよくわからずに使っていたので、お手上げです。
何を確認すればよいでしょうか?

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

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント35pt

読み込む XML は UTF-8 以外でエンコードされていませんか?

PHP5では、XMLパーサを使う場合の文字エンコーディングは UTF-8 にした方が良いようです。

id:jcf01700

ありがとうございます

読もうとしているRSSは、niftyのココログ http://www.cocolog-nifty.com/ で、 となっています。

2008/11/03 13:35:20
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント35pt

1)スクリプト全体が UTF-8 になっており、mb_internal_encoding も UTF-8 になっていますか?


2)また、ご質問の行より前にあるはずの

$parser = xml_parser_create()


では、エンコードは指定していませんよね?


3)ココログのRSSは、どういう手順で$xml_docに取り込みましたか?

RSSを解析するなら、xml_parseを使った方が簡単だと思いますが‥‥。

id:jcf01700

できました!

色々ありがとうございました。

結局、ファイルを開くときのfopen()のやり方を変えたら直りました

@fread(fopen("$url","r"),100000)

としていたのを、

$fp = fopen($url, 'r');

$data = '';

while (!feof($fp)) {

$data .= fread($fp, 4096);

}

しました。

2008/11/03 16:48:57
  • id:jcf01700
    ごめんなさい、回答にタグをそのまま入れたら見えなくなってしまいました。
     xml version="1.0" encoding="utf-8" となっているので、UTF-8になっています。
  • id:Mook
    xml ファイルは本当に UTF-8 になっていますか。
    もともとはほかのコードであれば、ヘッダを書き換えただけではダメです。

    変換機能を持ったエディタ等で一度 UTF-8 に変換する必要があります。

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

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

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

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