получить персидский (ссылка на фарси) в UTF - PullRequest
0 голосов
/ 11 марта 2019

Я очень новичок в 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

зовут: امیر علی

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

امیرعلی

В файле

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

1 Ответ

0 голосов
/ 11 марта 2019

Ссылка 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 без BOM (Byte Order Mark) ...

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

Надеюсь, это поможет.

...