Вообще rss должен быть валидным xml.
XML говорит нам, что все данные которые находятся внутри <![CDATA[]]> будут выведены в результирующее дерево как есть. Т.е. если в значении узла есть символ <, то лучше использовать <![CDATA[]]>. Также нужно учесть, что xml не понимает мнемоники типа . Вместо него нужно писать &nbsp; или же использовать <![CDATA[]]>.
Я, например, в классе c_xml (
www.phpclasses.org/package/7232-PHP-Convert-between-XML-files-and-arrays-or-strings.html ) делаю так
static function valueToXML($value){
if (mb_strpos($value,'<')!==false || mb_strpos($value,'&')!==false) {
$value="<![CDATA[$value]]>";
}
return $value;
}
У этого кода есть недостаток — он не учитывает непечатные символы.
Но никакой ошибки не будет если использовать <![CDATA[]]> везде без разбору. Валидаторы провалидируют, а рсс-ридеры прочтут.
Также не забудьте учесть, что в значении узла может присутствовать сама строка "<![CDATA[]]>". В этом случае я порекомендую её заменить на строку <![CDATA[]]>