4

私はRSSフィードを取得しようとして何時間も働いてきました。問題は特殊文字にあります。ウェブサイトにリストとしてデータを掲載していますが、RSSフィードも必要です。タイトルには「&」があり、$amp;と表記されています。htmlspecialcharsを使用すると、$amp;amp;に変換されます。そうしないと、バリデーターは「&」のためにエラーを出します。「&」を書き込めないか、HTMLで正しく表示されません。そのままにしてCdataタグに入れようとしましたが、うまくいきませんでした。

フィードは次のとおりです:http://montanafarmersunion.com/rss.php

同じリストのhtmlは次のとおりです:http://montanafarmersunion.com/?hd = news&id = news

4

1 に答える 1

2

RSS Advisory Boardページは、問題をかなりうまくまとめています。

仕様では、アイテムの説明以外の要素でHTMLが許可されているかどうかについて明確になっておらず、アグリゲーターが他の要素の文字データを処理する方法に大きなばらつきが生じています。これにより、発行者は、XMLでエンコードする必要のある文字「&」および「<」をエンコードする方法を決定することが特に困難になります。

つまり、「正しい」方法はありません。理論的には、CDATAタグを使用せずに、タイトルをHTMLエンコードすることで回避できるはずです。たとえば、これはFirefoxとIE8で機能します。

$title = 'August 1st: MFU President &amp; friends on farm bill';
echo '<title>'.trim($title).'</title>';

ただし、上記のリンク先のページに基づいて、 W3 RSSバリデーター(これはあなたが使用しているものですか?)は、のためにそれを推奨していません。彼らは、16進文字参照を使用することを提案していますが、と&amp;についてのみです。これを実装する最も簡単な方法はおそらく簡単です:&<str_replace

$title = 'August 1st: MFU President & friends on farm bill';
$title = str_replace(array('&', '<'), array('&#x26;', '&#x3C;'), $title);
echo '<title>'.trim($title).'</title>';

(開始文字列をむき出しにしたことに注意してください&

このブログ投稿にも言及せざるを得ないと感じています。これは、すべての読者を常に幸せにする方法が実際にはないことを示しています。しかし、最後の方法でそれらのほとんどを取得する必要があります。

于 2012-08-03T01:03:29.560 に答える