2012-07-03 1 views
0

У меня проблема с завихрением: Я получаю данные из Mysql (названия городов) с умляутами, закодированными в ascii HEX (например,% DF для ß или% DC для ü). i конвертировать их с str_replace(); к немецкому Umlauts (ß, ü, ä, ö). Я получаю сообщение об ошибке, когда я отправляю данные (города) с помощью curl. («Заполните от правильного!»)CURL в PHP URL w/Umlauts

, когда я отправляю данные БЕЗ Umlauts (ä, ö, ü, ß), все в порядке! Что не так с моим кодом или с curl. Я также попробовал это с оболочкой - та же проблема!

$this->url = "blah.org/?params=diesdas&city_from=Straßbourg&City_to=München"; 

$this->ckfile = tempnam("/tmp", "cookie"); 
$this->ch = curl_init(); 
curl_setopt($this->ch,CURLOPT_URL, $this->url); 
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($this->ch, CURLOPT_PROXY, "46.4.248.80"); 
curl_setopt($this->ch, CURLOPT_PROXYPORT, "3128"); 
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($this->ch, CURLOPT_COOKIEJAR, $this->ckfile); 
echo 'getting cookie file...'; 
$cookie = curl_exec($this->ch); 
if($cookie = false){echo 'couldn\'t get cookie!<br> '.curl_error($this->ch);}else{echo 'got cookie! omnomnom!<br>';} 

$this->ch = curl_init("blah.com/sendcookietome"); 
curl_setopt($this->ch, CURLOPT_COOKIEFILE, $this->ckfile); 
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($this->ch, CURLOPT_PROXY, "46.4.248.80"); 
curl_setopt($this->ch, CURLOPT_PROXYPORT, "3128"); 
curl_exec($this->ch); 

лучший, meeeeeh!

+0

Они должны быть ранжированы ... Почему вы это возвращаете? – Wrikken

ответ

0

Я получил его на работу: wow.wtf?

эта ссылка работает 'ß': blah.org/ & from_spar = Straßburg & to_spar = Киль + Hbf blah.org/ & from_spar = Köln + Hbf & to_spar = Штуттгарт + Hbf

То, как это принято.

0

Символы должны быть закодированы в URL, если вы используете их в данных GET или POST. Не расшифровывайте их.

+0

, когда я смотрю «blah.org/?params=diesdas&city_from=Straßbourg&City_to=München» в моем браузере - все отлично! когда я закручиваю его - я получаю «введите форму правильно». – meeeeeh

+0

Это потому, что ваш браузер кодирует символы для вас, сохраняя его простым для пользователя. –

+0

, когда я позволю umlauts urlencoded i can not получить исходный код с этой страницы. здесь URL-адрес, который извлекает файл cookie: http://bahn.ltur.com/index/search/?lang=de_DE&searchin=DE-SB-VI&trip_mode=trip_simple&from_spar=Stra%DFburg&to_spar=Haiger&start_datum=04.07.2012&start_time=06%3A30&end_datum = 04.07.2012 & end_time = 16% 3A30 & SEA_adults = 1 & trainclass_spar = 2 % DF для ß и URL, который получает печенье: "http://bahn.ltur.com/details" – meeeeeh

0

Используйте rawurlencode() для ваших городов.

http://php.net/manual/en/function.rawurlencode.php

Также вы опечатка Straßburg для там формы ....

В вашем примере:

$cityname =rawurlencode('Straßburg'); 

$url ='http://bahn.ltur.com/index/search/?mnd=de&lang=de_DE&searchin=DE-SB-VI&trip_mode=trip_simple&from_spar='.$cityname.'&to_spar=Haiger&start_datum=04.07.2012&start_time=06%3A30&end_datum=06.07.2012&end_time=16%3A42&SEA_adults=1&SEA_kids1=0&SEA_kids2=0&SEA_adult1=&SEA_adult2=&SEA_adult3=&SEA_adult4=&SEA_adult5=&SEA_kid11=&SEA_kid12=&SEA_kid13=&SEA_kid14=&SEA_kid15=&trainclass_spar=2&x=54&y=15 
'; 

//do your curl thing.. 
+0

спасибо за ваш ответ! Хорошо, дело в том, что все правильно закодировано в БД (K% F6ln + Hbf (Köln Hbf), Stra% DFburg (Straßburg) и т. Д.) Когда я отправляю запрос на получение файла cookie по указанному выше URL-адресу Я получаю, что «правильно заполнять форму». – meeeeeh

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