2

W3C バリデーターを使用して検証する RSS フィードを作成しようとしています。次の文字を含む URL から問題が発生し続けます£`または-

URL は次のとおりです。

http://www.example.co.uk/news/2012/april/stamp-rationing-–-why-the-royal-mail-are-ripping-you-off

エラーは次のとおりです。

このフィードは検証されません。行 14、列 119: リンクは完全で有効な URL でなければなりません: http://www.example.co.uk/news/2012/april/stamp-rationing- –-why-the-royal-mail-are-ripping -you-off [help] ... --Why-the-royal-mail-are-ripping-you-off

記号をエスケープ文字に置き換えようとしましたが、うまくいきません。私が使用しているエスケープ文字は次のとおりです。

 Text = Text.Replace("-", "&#45");
            Text = Text.Replace("£", "%C2%A");
            Text = Text.Replace("`", "%60");
            Text = Text.Replace("’", "%60");  

この問題を解決する方法を知っている人はいますか? 問題を引き起こしているリンクがいくつかあります。

http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home- £15,000

エラー:

このフィードは検証されません。行 14、列 106: リンクは完全で有効な URL でなければなりません: http://www.example.co.uk/news/2012/march/for-sale-3-bed-detached-london-home- £15,000 [ヘルプ] ... -sale-3-bed-detached-london-home-£15,000

4

3 に答える 3

3

RSS に投稿する前に、URLをURL エンコードする必要があります。

var encoded = HttpUtility.UrlEncode(aUrl);

などもエンコードされるため:、URL は直接使用できないことに注意してください。/

これらの値を有効な XML にしたい場合は、SecurityElement.Escape代わりに を使用してください。

var escaped = SecurityElement.Escape(aUrl);
于 2013-01-22T10:46:36.577 に答える
0

私は自分のシステム用の API を構築しており、フィールドを正規化するためにいくつかのものを使用しています。これを PHP でフィルタリングしてみてください。

$value = preg_replace('/[^a-z]/i', '', $value);
$value = preg_replace('/[^\x09\x0A\x0D\x20-\x7F]/e', '"&#".ord($0).";"', $value);
$value = htmlentities($value, ENT_NOQUOTES, 'UTF-8', false);
于 2013-01-22T10:43:02.633 に答える
0

答えは、UTF-8 エンコーディングを使用するか、ASCII 以外の文字を XML エンティティに変換することです。

  • UTF-8 エンコード: ドキュメントが UTF-8 で出力され、関連するエンコード ヘッダーが含まれていることを確認します。

    PHP での UTF-8 エンコーディング xmlも参照してください。

  • エンティティのエンコード: すべての非 ASCII 文字を XML エンティティに変換します。

    XML エンティティは次のようになります: £(これは£記号用です)。ほとんどのプログラミング言語は、XML ドキュメントを生成するときに自動的にこれを行うか、それを行うための標準関数を提供します。使用している言語を指定していませんが、上記は適切な API 関数を見つけるのに役立ちます。

XML データを手動で生成する (つまり、タグと属性を文字列として出力する) ことや、エンティティを手動で文字列置換することは、行ってはならないことの 1 つです。適切な API を使用する必要があります。XML (またはその他の標準データ形式) を手動で生成すると、常にこのような問題が発生する可能性があります。適切に実行するためのツールが目の前にある場合、難しい方法で実行するのは少しクレイジーに思えますか? .

于 2013-01-22T10:54:44.640 に答える