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

Другие вопросы по тегам