1

PHP で RSS フィード アグリゲーター/リーダーを構築しています。RSS は本質的にユーザー生成コンテンツであるため、フィード コンテンツが安全であることに依存したくありません。

ユーザーのデバイスに保存および表示するためにフィード コンテンツをサニタイズする方法についてアドバイスを求めています。現在、htmlentities(feed_content)すべての文字をエスケープするために使用していますが、Javascript でデコードできない文字を UTF-8 でエンコードしているため、正しく機能しません (フロントエンドの構築に使用します)。

- Original: "Soundtrack: Dinosaur Jr. - Don’t Pretend You Didn’t Know I hadn’t thought much..."

- After htmlentities: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."

- After JS decodeURI: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."

上記の htmlentities を削除すると、テキストが正しく表示されます。しかし、それがデータを確実にサニタイズする正しい方法かどうかはわかりません

4

1 に答える 1

1

正しい文字セットを htmlencode に渡します。

echo htmlentities($str, ENT_QUOTES, "UTF-8");

...しかし、通常はそうする必要はありません。ブラウザーが utf8 として正しく解釈するように、正しいヘッダーを設定してください。

header('Content-Type: text/html; charset=utf-8');

または、json を使用してロードする場合:

header('Content-type: application/json; charset=utf-8');
于 2013-04-17T19:08:09.190 に答える