fix20152
@fix20152
javascript developer

Как справиться со спец символами во время парсинга через библиотеку curl?

Добрый день
У меня такая проблема, не могу справиться из спец символами, когда парсю через библиотеку curl то из-за них выдает ошибку, что можно сделать чтобы как-то экранировать их или еще что то.
Пример адреса -
localhost/profile(product™-secretarial-services).htm
localhost/profile(copy-comme-ça)_537356.htm
  • Вопрос задан
  • 2972 просмотра
Решения вопроса 1
mannaro
@mannaro
Умею профессионально гуглить
Попробуйте закачать этот класс.
А затем сделать так:
<?php

include_once('idna_convert.class.php');

$url="localhost/profile(product™-secretarial-services).htm";

$converter = new idna_convert();
$domain = parse_url($url, PHP_URL_HOST);
$encoded_domain = $converter->encode($domain);
$url = str_replace($domain, $encoded_domain, $url);

$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_TIMEOUT, 30);
curl_setopt($resource, CURLOPT_MAXREDIRS, 10);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($resource);

curl_close($resource);
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
@PhantomBlade
Не совсем понял, но может быть вам нужен rawurlencode?
Ответ написан
Комментировать
xEpozZ
@xEpozZ
Веб-разработчик
зачем пример адреса? пример кода нужно
Ответ написан
Комментировать
fix20152
@fix20152 Автор вопроса
javascript developer
Поставил эту функцию, curl выдал ошибку, адрес получился вот такой localhost/%2Fprofile%28copy-comme-ca%29_537356.htm
Ответ написан
Комментировать
fix20152
@fix20152 Автор вопроса
javascript developer
Вот моя функция:
$url=localhost/profile(product™-secretarial-services).htm
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, trim($url));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_REFERER, "google.com");
curl_setopt($ch, CURLOPT_USERAGENT, get_random_user_agent());
$res=curl_exec($ch);
Вот и хочу получить содержимое страницы, а оно мне ошибку выдает
Ответ написан
fix20152
@fix20152 Автор вопроса
javascript developer
Так и сделал
<?php

include_once('idna_convert.class.php');

$url="localhost/profile(product™-secretarial-services).htm";

$converter = new idna_convert();
$domain = parse_url($url, PHP_URL_HOST);
$encoded_domain = $converter->encode($domain);
$url = str_replace($domain, $encoded_domain, $url);

$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_TIMEOUT, 30);
curl_setopt($resource, CURLOPT_MAXREDIRS, 10);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($resource);

echo $response;
curl_close($resource);

url уже смотрю отображается нормально, но все равно страница пустая
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Видимо не судьба, высокий порог вхождения, все дела
Ответ написан
Комментировать
fix20152
@fix20152 Автор вопроса
javascript developer
Та как это, разве ссылки в которые входят спец символы нельзя парсить??
Ответ написан
Комментировать
fix20152
@fix20152 Автор вопроса
javascript developer
Нет, это я ошибся,скрипт сверху работает спасибо @mannaro
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы