парсинг кириллических ссылок PHP

346
01 июля 2017, 12:13

Как парсить подобные ссылки:

<?php echo file_get_contents('http://synonymonline.ru/П/прекрасный'); ?>

пробовал с urlencode и rawurlencode, iconv - ничего не помогает

Answer 1

Нельзя просто взять ссылку и пропустить ее целиком через urlencode() или rawurlencode(). На выходе вы получите уже не ссылку.

Для вашего случая нужно выделить из ссылке path, разбить его на составляющие, их прогнать через функцию rawurlencode() и собрать все назад. Пример:

$arr = parse_url('http://synonymonline.ru/П/прекрасный');
$link = $arr['scheme'] . '://' 
      . $arr['host']
      . implode('/', 
            array_map('rawurlencode', 
                explode('/', $arr['path'])
            )
        );
echo file_get_contents($link);

P.S. Если у вас домен будет содержать символы отличные от латинских, то его придется переводить в формат IDNA ASCII с использованием idn_to_ascii()

READ ALSO
Как правильно: &ldquo;503 Service Temporarily Unavailable&rdquo; или &ldquo;503 Service Unavailable&rdquo;?

Как правильно: “503 Service Temporarily Unavailable” или “503 Service Unavailable”?

В сети встречаются оба формата записи:

187
как открыть *.crl файл на php

как открыть *.crl файл на php

Нужно считать из файла id сертификатов но не могу найти решения для php нахожу только программки под windows

188
Ошибка при попытке загрузить файл с диска yandex через webdav

Ошибка при попытке загрузить файл с диска yandex через webdav

Всем приветЯ пытаюсь загрузить большой файл с диска yandex с помощью webdav, но в качестве ответа я получаю следующую ошибку

225