Сущность HTMl в .txt файл через PHP

Rango

Новичок
PHP:
<?$file = fopen ("test.txt", "a");
//Переменная, содержащая сущность символа вертикальной стрелы (↑)
$a = "&uarr;";
//Декодирование сущности 
$b = html_entity_decode("$a");
//Запись результата декодирования в файл test.txt
fputs ($file, "$b");
fclose ($file);
?>
Цель: записать в файл test.txt символ вертикальной стрелы (↑) из работы PHP-кода.
Я пробовал разные вариации записи символа стрелы в файл, но все безуспешно.

Пожалуйста, подскажите, как возможно записать символ сущности HTML в файл .txt из PHP-кода?
 

Sufir

Я не волшебник, я только учусь
[mod_telepat]Возможно дело в этом? И дальнейшие комменты по теме сохранения Unicode...[/mod_telepat]
PHP:
// Вообще у меня вот так отлично работает и твой код тоже прекрасно сохраняет стрелку
$a = "&uarr;";
$myString = "\r\nTest with accents " . html_entity_decode( $a ); 

$fh=fopen('test.txt',"a"); 
fwrite( $fh, $myString ); 
fclose($fh);
А в чём конкретно проблема? Записи вообще не происходит? Или ошибки какие-то появляются, или запись происходит, но символ не тот?

P.S.: Может file_put_contents лучше воспользоваться?
 

Rango

Новичок
Запись происходит, но в виде кода сущности (&uarr; ).
Не происходит преобразования кода в символ при записи в файл,а при отображении в браузере все работает (проводил несколько тестов: как с мнемоникой (&uarr), так и с кодом (&#8593)).
 

fixxxer

К.О.
Партнер клуба
html_entity_decode("&uarr;", ENT_QUOTES, "UTF-8")

будет, ессно, в кодировке utf-8.

в cp1251, например, нет представления стрелки, потому и декодировать нельзя
 

Sufir

Я не волшебник, я только учусь
Точно, а мне как-то и в голову не пришло, что кто-то ещё может не с UTF работать, да ещё и при том, что нужна работа с Unicode-символами... Я как-то года два уж наверное с cp1251 не сталкиваюсь.
 

Rango

Новичок
В файле text.txt помимо символа стрелы должен быть русский текст.
Стрелу удалось вставить, но сопутствующий этой стреле русский текст превращается в крякозябы.
PHP:
$a = "&uarr;";
$tr = html_entity_decode("&uarr;", ENT_QUOTES, "UTF-8");
$fh=fopen('test.txt',"a"); 
fwrite( $fh, "Русские буквы +" . $tr ); 
fclose($fh);
Если выставить в файле test.txt кодировку ANSI, то результатом работы будет:
Русские буквы +↑
Если выставить в файле test.txt кодировку UTF-8, то результат будет записан со стрелой, но без русских букв:
 

Adelf

Administrator
Команда форума
Rango
Дай угадаю.... мммм.... может быть русские буквы у тебя в ANSI????
 

Rango

Новичок
Не могли бы вы дать пример работающего скрипта, который производит запись русских букв и символа стрелы в .txt файл (и, пожалуйста, укажите кодировку .txt файла)?
Буду признателен.
 

Ярослав

Новичок
Rango
Установите для своего скрипта кодировку utf-8, точнее для того скрипта, где указан "Русские буквы..."
 

Rango

Новичок
Решение было простым.
Просто изменил кодировку PHP файла и файла .txt на UTF-8 и все заработало идеально.

Спасибо за помощь.
Тему можно закрывать.
 
Сверху