RSS Advisory Boardページは、問題をかなりうまくまとめています。
仕様では、アイテムの説明以外の要素でHTMLが許可されているかどうかについて明確になっておらず、アグリゲーターが他の要素の文字データを処理する方法に大きなばらつきが生じています。これにより、発行者は、XMLでエンコードする必要のある文字「&」および「<」をエンコードする方法を決定することが特に困難になります。
つまり、「正しい」方法はありません。理論的には、CDATAタグを使用せずに、タイトルをHTMLエンコードすることで回避できるはずです。たとえば、これはFirefoxとIE8で機能します。
$title = 'August 1st: MFU President & friends on farm bill';
echo '<title>'.trim($title).'</title>';
ただし、上記のリンク先のページに基づいて、 W3 RSSバリデーター(これはあなたが使用しているものですか?)は、のためにそれを推奨していません。彼らは、16進文字参照を使用することを提案していますが、と&
についてのみです。これを実装する最も簡単な方法はおそらく簡単です:&
<
str_replace
$title = 'August 1st: MFU President & friends on farm bill';
$title = str_replace(array('&', '<'), array('&', '<'), $title);
echo '<title>'.trim($title).'</title>';
(開始文字列をむき出しにしたことに注意してください&
)
このブログ投稿にも言及せざるを得ないと感じています。これは、すべての読者を常に幸せにする方法が実際にはないことを示しています。しかし、最後の方法でそれらのほとんどを取得する必要があります。