CDATA cannot be escaped
Atomフィードつくってて、CDATAってどうやってエスケープするんだろうと思って調べてみた。ら、意外と複雑だった。
Hence, it is not possible to escape ]]> within a CDATA section. http://stackoverflow.com/questions/223652/is-there-a-way-to-escape-a-cdata-end-token-in-xml
CDATAの閉じタグ]]>
はエスケープできないらしい。
全ての
]]>
を]]]]><![CDATA[>
に置き換える。 http://d.hatena.ne.jp/holidays-l/20101210/p1
ということで、置換のメソッドはこんな感じ。
public static function cdata($value)
{
$value = str_replace(']]>', ']]]]><![CDATA[>', $value);
return sprintf('<![CDATA[%s]]>', $value);
}