2012-03-15 3 views
2

PHPのHTMLの特殊文字は、私はトラブル次のような問題に対する解決策を見つけることを持ってエンティティにないコードするが進

あなたがHTMLエンティティに変換するすべての特殊文字を取得

£ => £ 
" => " 
 =>  
.... 

しかし、私は実際に必要なのはそのエンコーディングの小数点バージョンです:

£ => £ 
" => " 
 of(Â) => À 
  =>   

がすでに性が存在する機能がありますこれを手動で交換せずにこの問題を解決できますか?

+0

これは解決策であると私は不思議ですか?別の解決策が見つかるかもしれないので、これは必要ありませんか? – Nanne

+1

XMLフィードを作成していて、有効な文字が必要なので、W3Cに準拠する必要があります。10進数のエンコーディングを使用しても問題は発生しませんが、通常のhtml文字エンコーディングが使用されている場合、valdateは – Alex

+0

です。 http://www.xbox.com/pub/a/2003/01/02/xmlchar.html – Nanne

答えて

3

次のようなものがありますか?

function htmlnumericentities($str){ 
    return preg_replace('/[^!-%\x27-;=?-~ ]/e', '"&#".ord("$0").chr(59)', $str); 
} 

function numericentitieshtml($str){ 
    return utf8_encode(preg_replace('/&#(\d+);/e', 'chr(str_replace(";","",str_replace("&#","","$0")))', $str)); 
} 

echo (htmlnumericentities ("Ceci est un test : & é $ à ç <")); 
echo ("<br/>\n"); 
echo (numericentitieshtml (htmlnumericentities ("Ceci est un test : & é $ à ç <"))); 
+0

こんにちはhtmlnumericentities()は必要なものに最適ですが、numericentitieshtml()にはchr()を引用符で囲んで小さな問題があります"/&#(\ d +);/e '正規表現でエラーが発生する"警告:入力時に予期しない文字があります:' .... regexp code on line 1」 – Alex

+0

私は自分のローカルでテストしました。 、私にダブルチェックをさせてください –

+0

あなたがそれを使用する必要がある人々のために偉大なnumericentitieshtml()関数を見てみる機会があれば(私は実際にそれを必要としません。このソリューションに感謝します。 – Alex

関連する問題