こんにちわ。
お時間あるかた、どうぞよろしくおねがいします。
現在、RSSを読み込んで、色々な処理をしたいと思っています。
そして、下記のコードを書いたところうまくいきました。
$root = simplexml_load_file($url);
ところが、使っているレンタルサーバでは
PHP.iniのallow_url_fopenをONにすることが禁止されていることを知ったので、
simplexml_load_string()を使うように、プログラムを書き換えました。(下記抜粋)
$response = http($url . $parm);
$line = explode("\n" , $response);
// HTTPヘッダを消す
for ( $i=0 ; $i < 100 ; $i++ )
if ( $line[$i] == "" ) break;
// HTTPボディーだけ取得
$xml_str = "";
for ( $i++ ; $i < count($line) ; $i++ )
$xml_str .= $line[$i];
$root = simplexml_load_string($xml_str);
こうしたところ、一部のRSSで、Error while parsing the documentが出るようになってしまいました。
いくつか試したところ、amebloのフィードはOKなのですが、他のRSSだとエラーになるようです。
$ret = get_rss("http://feedblog.ameba.jp/rss/ameblo/femiohji");// OK
$ret = get_rss("http://pub.ne.jp/marunohi/?action=rss&type=rss1. … NG
というわけで、
simplexml_load_file()のときは動いていたのですが、
simplexml_load_string()にしたらエラーになります。
原因がわからず、行き詰まってしまいました。
よろしくおねがいいたします。
No.1ベストアンサー
- 回答日時:
http関数がどんな挙動をしているのか分からないのですが、最終行 "</rdf:RDF>" まで読み込んでいますか? var_dump($line) でチェックして下さい。
amebloのフィードは "</rdf:RDF>\n" で終わっていますが、他のRSSは改行が無く終わっているのです。
以上、ご確認下さい。
この回答への補足
i80286さん、回答ありがとうございます。
試してみた結果、最後に、<rdf.RDF>まで取得できていました。
下記、デバッグ出力結果(抜粋)となります。
「</dc:date></item></rdf:RDF>」
回答いただいた時には、「おおお!」と興奮しましたが、
他にも理由がありそうです。
また、心当たりなど、思いついたことなどがあれば、
些細なことでもぜひご連絡いただけると嬉しいです。
今後とも宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- PHP phpのエラーについて 1 2022/06/27 22:30
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAでXMLが読み込めない
-
HTTPステータス 404 - There is...
-
東芝のDynabookなのですがアン...
-
SNMP リンクダウンとノードダ...
-
XMLで特殊文字を扱うにはどうし...
-
XSLで、XMLの空タグを制御したい。
-
xmlファイルが上手にHTMLに変換...
-
UTF-8でエンコーディングとはど...
-
XMLで要素が記述された順番に意...
-
XML、XSLTの適応エラー(IEから...
-
u_shortなどの省略した宣言につ...
-
コンテキストメニュークリック...
-
特殊記号が勝手にエスケープさ...
-
ルート要素ノードが2個ある場合?
-
ToolStripMenuItemの選択(VB)
-
VB.NETで最後フォのフォ...
-
XMLをXSLを使いHTMLに変換した...
-
Visual Basic .NET の識別子は...
-
CPUの考え方を教えてください ...
-
XMLの要素の内容の中に要素
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelにてweb関数を使い、webデ...
-
Access VBAでXMLが読み込めない
-
MagpieRSSを使用して自分のHPに...
-
simplexml_load_file() のかわ...
-
IEが表示できないXML
-
127.0.0.1とlocalhost
-
アメブロ rss 読み込み
-
Access VBAで指定した要素を読...
-
下水道公団の電子納品のチェッ...
-
DTDで、空要素をエラーしたい
-
RSS2.0の書き方
-
HTTPステータス 404 - There is...
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
-
バッチファイルでテキストファ...
-
XML、XSLTの適応エラー(IEから...
-
XMLで要素が記述された順番に意...
-
XML同じ名前の要素を自動で集約...
-
xmlファイルが上手にHTMLに変換...
-
UTF-8でエンコーディングとはど...
おすすめ情報