&でつまづく

特殊記号周りのエスケープはなかなか嫌なものです。
もちろん自分で全てデータを作っている時はルールを決めて気をつければいいわけです。
しかし外部から入手したデータを流用するときにはそういうわけにはいきません。


で、結果としてエラーがでて、原因を探し、その原因がエラーを引きおこさないように対処しなければいけない。原因を特定すればカンタンなんですが、特定するまでが面倒ですね。特定しないと対処しようがないし。


今回のエラーはこれ。

Warning: DOMDocument::createElement() [function.DOMDocument-createElement]: unterminated entity reference C) in /*******/class/htmlscraping/HTMLToFeed.class.php on line 184


今までのデータで出なかったエラーがライブラリ側ででるということは、データ側に想定外の問題があるのではないかと。
問題のありそうなデータをはき出している部分のソースを一度全部消して一行ずつ加えていると、$item->titleに入力している箇所でエラーが生じていることがわかりました。


一応結果のRSSははき出された上で、同じエラーが4つでているので、元のCSVの特定の行に異常なデータが入っていると。
今度はCSVを全部消して、何行かずつ加えていってエラーが生じるかどうかで確認していきます。


ありました。半角の&が入っていましたorz


正規表現はいらないので、preg_replaceではなくstr_replaceで変換完了!