SimpleXML simplexml_load_string()で文字コードが原因でエラーになる件
XMLをObjectベースで取り扱えるSimple XMLですが、parseしようしとしたときに、 Cannot use string offset as an array でfatal errorになっていいて、どうもsimplexml_load_string()の時点で、Wariningになってしまうような現象がなかなか解決できませんでした。
そもそもSimpleXMLではUTF-8を前提とした挙動なので、
場合に、エラーになってしまう可能性がある。
解決方法としては下記のいづれか。下にいけばいくほど無理やり。
- もし、parseさせるXMLをつくっているのであれば、UTF-8のヘッダ付で中身を念のためmb_convert_encodingしてXMLつくる
- 外部サイトのXMLファイル(RSSとか)の場合は、中身をmb_convert_encoding($hoge,mb_detect_encoding($hoge)) などする。
- 最後の手段として、UTF-8 -> SJISにして、SJIS->UTF-8にさらに戻すことでとりあえずなんとかする。ただし文字情報の一部が棄損する恐れがある。
結局最後の手段で対応。最近文字コードとの戦いが多いなぁw