Обработка пробела в параметре get - PullRequest
3 голосов
/ 16 ноября 2011

Я использую команду, подобную

 $page = file_get_contents($url);

, где

$url = "http://www.site.com/search/index.cfm?tab=names&workername=firstname lastname";

Когда URL-адрес набирается непосредственно в браузере, Chrome добавляет %20 между именем и фамилией ивеб-сайт обрабатывает вещи правильно.

Однако когда я использую $ url с пробелом, file_get_contents захватывает только результаты, соответствующие имени, и не знает, что workername = "firstname lastname"

Когда я явно добавляю "%20 "между ними возвращается NULL ...

Что обходится?

Спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Несколько проблем:

  1. Я надеюсь, что это просто потому, что вы быстро набрали его здесь, но вам нужно иметь строку в одинарных кавычках.
  2. Нет запросастрока для URL, потому что вы никогда не начинаете его с ?, поэтому нет, ни одна из этих переменных не будет существовать в $_GET.
  3. Вы do должны переопределить пробелы как %20 для URL.

$url = 'http://www.site.com/search/?tab=names&workername=firstname%20lastname';
       ^                           ^                              ^^^        ^

Редактировать:
Возможно, веб-сайт, который вы пытаетесь запросить, игнорирует их как GETпеременные.Вы пытались добавить этот код, чтобы явно сказать, что это запрос GET?

$options = array(
  'http' => array('method' => "GET", 'header' => "Accept-language: en\r\n")
);
$context = stream_context_create($options);
file_get_contents($url, false, $context);
0 голосов
/ 21 мая 2015

Вам нужно urlencode ваш текст:

$fixed= urlencode($workername);
$url = 'http://www.example.com/search/?tab=names&workername='.$fixed;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...