получить персидский (ссылка на фарси) символ в utf

Я очень новичок в php, и у меня есть скрипт для получения информации с какого-то персидского музыкального сайта.

У меня проблема с получением символов фарси с сайта:

$this->fa_artist = $html->find('div.main-post', 0)->find('p', 0)->find('b', 1)->plaintext;
file_put_contents('fa_artist.txt', $this->fa_artist);

В сохранении имени исполнителя на фарси в fa_artist по ссылке html

имя: امیر علی

но я вижу эту последовательность:

امیرعلی

В файле

Как я могу сохранить его как символ фарси?


person Alireza    schedule 11.03.2019    source источник
comment
Ссылка html в UTF8 должна быть закодирована с помощью rawurlencode. Смотрите мой ответ...   -  person Alessandro    schedule 11.03.2019


Ответы (1)


Ссылка UTF-8 (unicode) должна быть закодирована с помощью rawurlencode, который обслуживает необходимые последовательности символов в стандартном режиме соответствия... например:

<?php
  echo '<a href="' . rawurlencode("امیر علی") . '">' . htmlentities("امیر علی", ENT_QUOTES, "UTF-8") . '</a>';
?>

Если вы посмотрите источник, вы увидите:

<a href="%D8%A7%D9%85%DB%8C%D8%B1%20%D8%B9%D9%84%DB%8C">امیر علی</a>

rawurlencode необходимо использовать для ссылки UTF-8 (http://php.net/manual/en/function.rawurlencode.php)

htmlentities необходимо использовать для текста UTF-8 (http://php.net/manual/en/function.htmlentities.php)

Ваша страница должна обслуживаться как UTF-8 с использованием этого подхода:

ini_set('default_charset', 'UTF-8');

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

Таким образом, вы можете напрямую использовать UTF-8 в своем проекте, ничего не теряя...

Я надеюсь, что это поможет.

person Alessandro    schedule 11.03.2019