SimpleXML を使って XML をさくっと生成
▽20080531a
#プログラミング
#PHP
……する方法についてはググれば山ほど出てくるので割愛(ぉ
なんかねーやってたら警告が.
Warning: SimpleXMLElement::addChild(): unterminated entity reference ほげほげ in ~~
で,調べてみるとどうも,SimpleXMLElement::addChild() でテキストデータを値としてエレメントを追加する時に, データの中の & とかをエスケープしてくれねーみたいです.
Bug #44458 Ampersand sign in SimpleXMLElement->addChild() causes incomplete XML
sergej at halogen-dg dot com: 追加データに & 入ってると警告でるんですが?
rrichards@php.net: あーそれバグじゃねーから.マニュアル嫁.& はエスケープしなきゃダメ.
えー……だって > とか < とかは自動的にエスケープされるじゃんよー. テキスト追加するのに & だけは手動でエスケープしてね,ってどういう仕様なのよー. ていうかマニュアルのどこにそんなこと書いてあんのよー見つかんねーよー.
んじゃ CDATA でぶっこんじゃうってのはどうっすかね? と思ってやってみたら, > とかだけはきっちりエスケープする仕様なので追加できません. 必要な事全部はやらないがしなくていい程度にはやるという PHP のうんこ仕様全開で困ります.
結局のところ…… htmlspecialchars() で & をエスケープしちゃうのが最速っぽいんだけど…… えー何それー……ダサー……