2012-07-03 3 views
0

컬링에 문제가 있습니다. 움라우트를 ASCII 16 진수 (예 : % DF, ü는 % DC)로 데이터를 가져옵니다. 나는 그들을 str_replace()로 변환한다. 독일어 Umlauts (ß, ü, ä, ö). Umlauts (ä, ö, ü, ß)없이 데이터를 보낼 때 말머리로 데이터 (도시)를 보낼 때 오류가 발생합니다 (정확한 값을 기입하십시오).Umlauts를 사용하는 PHP URL의 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

내가 일을하는 데있어?

이 링크 'ß'에 대한 작동합니다 blah.org/ & from_spar = Straßburg & to_spar = 킬 + Hbf에 blah.org/ & from_spar = 쾰른 + Hbf에 & to_spar = 스투 트가 르트 + Hbf에

그것은 어떻게 받아 들여진다.

0

GET 또는 POST 데이터에서 문자를 사용하는 경우 문자를 URL로 인코딩해야합니다. 그들을 디코딩하지 마십시오.

+0

내 브라우저에서 "blah.org/?params=diesdas&city_from=Straßbourg&City_to=München"을 검색하면 괜찮습니다. 내가 그것을 말릴 때 - 나는 '정확한 양식 입력'을 얻습니다. – meeeeeh

+0

브라우저가 사용자를 위해 문자를 인코딩하므로 간단합니다. –

+0

내가 움라우트 urlencoded하자 내가 그 페이지에서 소스 코드를 얻을 수 없습니다. 여기에 쿠키를 가져 오는 URL : 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 ß 와 쿠키를 얻는 URL에 대한 % DF : "http://bahn.ltur.com/details" – meeeeeh

0

도시에 대해 rawurlencode()를 사용하십시오.

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

또한 당신은 당신의 예에서 ....이 양식 에게

을 스트라스부르 철자 : wow.wtf을 :

$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

이 답변에 대한 감사합니다! 글쎄요, 요점은 모든 것이 올바르게 DB에 인코딩되어 있습니다 (K % F6ln + Hbf (Köln Hbf), Stra % DFburg (Straßburg) 등) 위의 URL에서 쿠키를 가져 오라는 요청을 보낼 때 나는 '폼을 정확하게 기입하십시오'. – meeeeeh