Как преобразовать объекты HTML, такие как & # 8211; к их эквивалентам символов?

Я создаю файл, который должен быть сохранен на компьютере локального пользователя (не отображается в веб-браузере).

В настоящее время я использую html_entity_decode , но это не преобразование символов типа (это n-тире), и мне было интересно, какую другую функцию я должен использовать.

Например, когда файл импортируется в программное обеспечение, вместо ndash или просто a – он отображается как , Я знаю, что могу использовать str_replace , но если это происходит с этим персонажем, это может произойти со многими другими, поскольку данные являются динамическими.

Вам необходимо определить целевой набор символов. – не является допустимым символом в наборе символов ISO-8859-1 по умолчанию, поэтому он не декодируется. Определите UTF-8 как выходную кодировку и она будет декодироваться:

 echo html_entity_decode('–', ENT_NOQUOTES, 'UTF-8'); 

Если это вообще возможно, вы должны избегать HTML-объектов для начала. Я не знаю, откуда взялись эти закодированные данные, но если вы храните их так же, как в базе данных или в другом месте, вы делаете это неправильно. Всегда сохраняйте данные в кодировке UTF-8 и конвертируйте только в HTML-объекты или, иначе, при необходимости выходите для вывода.

Попробуйте mb_convert_encoding() :

 $string = "n–dash"; $output = mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES'); echo $output; 

ОБНОВИТЬ

 function decode_characters($data) { $text = $data; $enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1"); $resutl_characters = iconv($enc, "UTF-8", $text); return $resutl_characters; } 

Кодируйте файл как UTF-8, используя utf8_encode() . Тогда вам не нужно ничего менять или удалять.

Вы пытаетесь превратить символы в HTML-объекты для хранения и последующего извлечения?

 htmlentities('–', ENT_COMPAT, 'UTF-8'); // Returns "–" 

Если я неправильно прочитал ваш вопрос, пожалуйста, дайте мне знать.