10

私は次のコードを持っています:

mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8');

まったく同じように動作するが、mb_ *関数を使用しない代替コードが必要です(mb拡張機能は一部の環境では使用できません)。

と思った

utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8'));

まったく同じことをする必要がありますが、残念ながらそうではありません。

4

1 に答える 1

23

少し遊んだのですが、これはとても面白いと思います。2番目の部分も「htmlspecialchars」を実行しているようです。htmlentitiesが正しく実行されないため、mb_convert_encodingのバグである必要があります。

結果に対してhtmlspecialchars_decodeを実行すると、mb_convert_encodingを使用する場合とまったく同じになります。

コード:

$string = 'Test:!"$%&/()=ÖÄÜöäü<<';
echo mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8')."\n\n";
echo htmlspecialchars_decode(utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8', false)));

上記のコードのデモは次のとおりです: http ://sandbox.onlinephpfunctions.com/code/715acade3b8337d9c9e48e58deee2a237015c259

そしてここにあなたの問題を示すためにhtmlspecialchars_decodeなしのデモがあります: http ://sandbox.onlinephpfunctions.com/code/5c4a32bf99aa8fd6246c4a77132a023d32945363

于 2012-08-15T22:41:24.463 に答える