PHP вернуть HTML специальные символы в текстовом файле
В настоящее время у меня есть текстовый файл, который выглядит так:
ABCDEF
Blah’s Test
12344
Blah’s Test
Testing
Я попытался преобразовать специальные символы в их действительные символы, поэтому, например, я попытался сделать оригинальный текстовый файл в это:
ABCDEF
Blah's Test
12344
Blah's Test
Testing
Для этого я использовал html_entity_decode()
однако вместо ожидаемых результатов я получаю что-то вроде:
ABCDEF
Blah’s Test
12344
Blah’s Test
Testing
Как я могу исправить свой код, чтобы делать то, что я хочу?
Мой код:
<?php
$items = file_get_contents('test1.txt');
$items = html_entity_decode($items);
file_put_contents("test2.txt", $items);
?>
3 ответа
Это набор символов
html_entity_decode($a, ENT_QUOTES, 'cp1251');
Используйте опцию кодировки символов.
html_entity_decode($string, ENT_COMPAT, 'UTF-8');
Какую версию PHP вы используете?
В версиях, предшествующих 5.4.0 Функция html_entity_decode() по умолчанию использует кодировку ISO-8859-1. В версии 5.4.0 и более поздних версиях по умолчанию используется кодировка UTF-8. Я подозреваю, что вы используете более раннюю версию, чем 5.4.0. В результате используемые вами символы UTF-8 неправильно декодируются.
Попробуйте передать UTF-8 в качестве второго параметра. Смотрите здесь для получения дополнительной информации: http://www.php.net/html_entity_decode