У меня есть следующий код:
mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8');
Мне нужен альтернативный код, который делает то же самое, но не использует никаких функций mb_ * (расширение mb недоступно в некоторых средах).
я думал так
utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8'));
должен делать то же самое, но, к сожалению, это не так.
Я немного поиграл и нашел это очень интересным. Похоже, вторая часть также запускает «htmlspecialchars». Должна быть некоторая ошибка в mb_convert_encoding, поскольку htmlentities работает неправильно.
Если вы запустите 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