背景: tinymce を使用して HTML を編集する Web サイトを持っています。改行なしスペースや &x22C4; などの HTML エンティティ。entity_encoding:"named" オプションを使用しているにもかかわらず、tinymce によって UTF-8 文字に変換されています。次に、UTF-8 の MySQL テーブルに保存します。後で同じ HTML を取得して再編集する場合、マルチバイト文字は tinymce によって個々の文字に分割されます。Tinymce は、これがバグであることを確認しました。
問題は、HTML を壊さずにすべてのマルチバイト UTF-8 文字を HTML エンティティに変換するにはどうすればよいかということです。
PHPで次のことを試しましたが、マルチバイトのUTF-8文字が削除されただけです:
$encoded_string = htmlentities( $utf_string, ENT_HTML5, 'UTF-8', false );
$html_ent_conv = htmlspecialchars_decode ( $encoded_string , ENT_COMPAT | ENT_HTML5 );
mb_encode_numericentity も試しましたが、convmap パラメーターに何を使用すればよいかわかりませんでした。
更新: ENT_HTML5 をサポートしていない PHP 5.3.17 を使用しているため、削除しました。現在は非改行スペースでは機能しますが、他のマルチバイト UTF-8 文字では機能しません。