2011-01-15 16 views
3

私は以下の検証の警告を受けています。そして私の記事のいくつかが特殊文字を扱い、RSSフィードに特殊文字をレンダリングしたり、レンダリングしないとどうしたらいいのだろうと思っていましたか? htmlentitesを使うべきかどうか?もしそうなら、どのように?またPHP&RSSフィードと特殊文字の検証の問題

、フィードリーダーの 最も広い範囲との相互運用性は は、以下の推奨事項を実装することによって改善することができます。行22、列35: タイトルにHTMLを含めることはできません。&

PHPコード

<title>' . htmlentities(strip_tags($title), ENT_QUOTES, "UTF-8") . '</title> 
+0

feedvalidatorを参照してください。RSSは、最も幅広い相互運用性のために、「&」と「<」を表す16進文字参照「&」の使用を推奨しています(「<」を表すために)私は有効なRSSタイトルを与えるためにPHP関数を見つけることができませんか?LOL。 –

答えて

0

htmlentities()を取り出す。 HTMLファイルのみです。

+0

は本当に良いアイデアですか? – HELP

+0

xmlファイルのタイトルをある時点でhtmlページに表示し、 xmlファイルを生成するときにはhtmlentities()を使用してください。 – dqhendricks

+0

返信を読むとdqが正しいので、** html **エンティティ – RobertPitt

1

CDATAを使用するXMLフィードの文字をエスケープするには、XMLレイアウトを中断することなく生データを使用できます。ブラウザのためにそれらをエスケープします。このようhtmlentitesとstrip_tagsを使用していない、他の読者はそれらを正しく読んでください:

<title><![CDATA[ YOUR RAW CONTENT]]></title> 

注:

これを試してみてください。 W3Schoolsのから

Qoute:

CDATAはXMLパーサによって解析されるべきではないテキストデータについて使用される用語。 "<""&"のような文字は、XML要素では不正です。 "<"は、パーサがそれを新しい要素の開始として解釈するため、エラーを生成します。 "&"は、パーサーがそれを文字エンティティの先頭として解釈するため、エラーを生成します。 一部のテキストには、JavaScriptコードと同様に、"<"または"&"文字が多数含まれています。エラーを回避するために、スクリプトコードをCDATAとして定義することができます。 CDATAセクション内のすべてがパーサーによって無視されます。 A CDATAセクションは、 "で始まる":

http://www.w3schools.com/xml/xml_cdata.asp

+0

CDATAを使用するときにstrip_tags関数を保持できますか? – HELP

+0

はい、それ – RobertPitt

+0

CDATAは '$ title'のみを表示するのに最適ですか? – HELP

1

/* feedvalidator.org(Feedburnerのは、あなたのフィードを検証するために、このサイトを推奨しています)言う:「最も広い相互運用のために、RSSのプロフィールの使用を推奨しています「<」を表現する16進文字の「&」を表現するための基準「&」と「<」。もちろん*/

 // find title problems 
     $find[] = '<'; 
     $find[] = '\x92'; 
     $find[] = '\x84'; 

     // find content problems 
     $find_c[] = '\x92'; 
     $find_c[] = '\x84'; 
     $find_c[] = '&nbsp;'; 

     // replace title 
     $replace[] = '&#x3C;'; 
     $replace[] = '&#39;'; 
     $replace[] = '&#34;'; 

     // replace content 
     $replace_c[] = '&#39;'; 
     $replace_c[] = '&#34;'; 
     $replace_c[] = ' '; 

     // We don't want to re-replace "&" characters. 
     // So do this first because of PHP "feature" https://bugs.php.net/bug.php?id=33773 
     $title = str_replace('&', '&#x26;', $title); 
     $title = str_replace($find, $replace, $title); 
     $post_content = str_replace($find_c, $replace_c, $row[3]); 

     // http://productforums.google.com/forum/#!topic/merchant-center/nIVyFrJsjpk 
     $link = str_replace('&', '&amp;', $link); 

私はいくつかの前処理をやっています$ title、$ post_content、$ linkが私のデータベースに追加される前に。しかしこれは、有効なRSSフィードを取得するためのいくつかの一般的な問題を解決するのに役立ちます。

更新日:&#x26;#x26;#x26; "再帰"問題については、https://bugs.php.net/bug.php?id=33773

+0

downvoteはこれを更新するよう動機づけました:-) –

+0

非常に便利です。どうもありがとう。 –