2012-04-27 9 views
0

RSSに表示されているデータにhtmlentitiesを使用し、ユニコード文字を持っているのでÁなどのサービスはhttp://feedvalidator.org/のように表示されます。RSSフィードにhtml entitesを追加するには

は、どのように私は(名前空間を使用してのように)XMLにこのエンティティを追加することができますか私は& < >のような文字をエスケープするためにさまざまな機能を使用する必要がありますか?

答えて

2

は、PHP 5.3.3

function encode($string) { 
    $result = ''; 
    foreach (str_split(utf8_decode(htmlspecialchars($string))) as $char) { 
     $num = ord($char); 
     if ($num > 127) { 
      $result .= '&#' . $num . ';'; 
     } else { 
      $result .= $char; 
     } 
    } 
    return $result; 
} 
2

htmlspecialcharsを使用して、XMLで特別な意味を持つ文字をエスケープします。

他の文字には適切な文字エンコードを使用してください。

htmlentitiesのドキュメントをスキミングすると、ENT_XML1を渡し、適切な文字エンコーディングを使用しない場合はXML互換の数値エンティティを取得できることが示唆されています)。ここで

+0

おかげで仕事関数であるが、私は、PHP 5.3.3を持っているとENT_XML1が5.4に加え、はhtmlspecialcharsは私が文書を持っている場合でも、無効としてユニコードのcharacersとバリのショーを残します'encoding =" utf-8 "' – jcubic

+0

@jcubic:そのエラーと出力を生成するために使用しているコードの詳細を投稿してください。 'htmlspecialchars'はXMLを生成するのに十分です。非ASCII文字をエスケープする必要はありません。 – bobince

+0

私はそれを修正したので記憶しませんが、キャラクタ '?a'(バリデータ)をデコードできないようなものが表示されます。 – jcubic

関連する問題