SJISなRSSとかきめえよw
pearのXML_RSSでrss読み込んで遊ぼうとおもったら、SJISのRSSがでてきてさあ大変!
$rss =& new XML_RSS($value['rss']);
$rss->parse();
$rss->getItems() as $item;
最初はこんな感じで すげえええええ!!!! ってやってたのに
Unsupported encoding at XML input line
とかいって怒られる!
SJISのRSSは対応してないようで、がっかり。
SJIS、EUC-JP、JISなどの日本語をSimpleXMLで使う方法 - PHP::PEAR - dozo PukiWiki
http://72.14.235.104/search?q=cache:U8ySgAaUwE4J:dozo.matrix.jp/pear/index.php%3FPHP%252FLiblary%252FSPL%252FSimpleXML%252Fmb_convert_encoding+shift_jis+%E3%81%AE+xml+%E3%82%92%E6%89%B1%E3%81%86+php&hl=ja&ct=clnk&cd=1&lr=lang_ja
あたりが参考になりそうとおもって iconvのところまでは期待した。
だが iconvについて触れて無くないか・・・?
結局、3時間ほど格闘したが、解決できず無理やり押し切る形に・・・・・・。
$buff = file($url);
$i = 1;
while($buff[$i]){
$xml .= $buff[$i++];
}
$xml = "\n".$xml;
$buff = mb_convert_encoding($xml,'UTF-8','UTF-8,SJIS,EUC-JP,JIS');
// パーサ作成
$parser = xml_parser_create();
// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx);
// パーサ開放
xml_parser_free($parser);
$day_key = array('PUBDATE','DC:DATE');
foreach ($values as $value) {
var_dump($url);
$tag = $value["tag"];
$type = $value["type"];
$value2 = $value["value"];
foreach($day_key as $day_key_value){
if($day_key_value == $tag){
var_dump($day_key_value);
var_dump($value2);
$day_got_flag = 1;
break 2;
}
}
}
あー 汚いったらありゃしない。
もっときれいに片付ける方法があるはずだ。
最初はxpathとか使ってやろうとおもってたのに、なんだこのざまは・・・・・・・!
くやしい!けど感じない!
