2013-11-19 3 views
0

Я использую curl_setopt($ch, CURLOPT_URL, $link) для получения внешнего сайта, но есть специальные символы (&, ?, ;) в некоторых URL-адресах и завитки не работают.cURL и специальные символы в URL

я использовал urldecode, но до сих пор не повезло, и они не будут заменены специальные символы с закодированными из них (например, %26 вместо &), но источник сайта только возвращает страницу 404.

+0

Не могли бы вы привести пример URL-адреса, который не работает? –

+0

sure: example.com/Default.aspx?tabid=1298&articleType=ArticleView&articleId=1531987 –

ответ

1

http://www.php.net/manual/en/function.curl-escape.php

// Создать локон ручка $ CH = curl_init();

// Escape строка, используемая как параметр GET $ location = curl_escape ($ ch, 'Hofbräuhaus/München'); // Результат: Hofbr% C3% A4uhaus% 20% 2F% 20M% C3% BCnchen

// Составьте URL с сбежавшего строки $ URL = "http://example.com/add_location.php?location= {$ местонахождения}"; // Результат: http://example.com/add_location.php?location=Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen

// Отправить запрос HTTP и закрыть ручку curl_setopt ($ ч, CURLOPT_URL, $ URL); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_exec ($ ch); curl_close ($ ч);

+0

моя PHP IDE (php storm 2.1) указала 'curl_escape' как« неопределенную функцию »и, похоже, нуждается в обновлении, так или иначе, я буду тестировать ее на новых Иды. –

0

Функция curl_escape доступна только с PHP 5.5.

Другим решением является использование функции encode_url здесь написано: http://publicmind.in/blog/url-encoding/ Он работает отлично для меня!

Смежные вопросы