2011-11-16 3 views
2

get 매개 변수에서 공백 처리

같은 명령을 사용하고 있습니다
 $page = file_get_contents($url); 

여기서

브라우저에 URL을 직접 입력하면 chrome이 xname xxxx를 추가하여 웹 사이트가 올바르게 처리합니다.

그러나 $ url을 공백과 함께 사용하면 file_get_contents는 firstname과 일치하는 결과 만 가져오고 workername = "firstname lastname"

을 인식하지 못합니다. "% 20"을 명시 적으로 추가하면 NULL ...

해결 방법은 무엇입니까?

고마워요!

+3

는'를 urlencode()''$의 url' 문자열을 보내고 노력이? – PeeHaa

+0

요청 후에 'error_reporting'을 활성화하고'$ http_response_header'를 확인하십시오. – mario

답변

2

몇 가지 문제 :

  1. 나는 이것이 당신이 여기 빠른 입력해서 희망하지만 작은 따옴표 문자열이 필요합니다.
  2. URL에 대한 쿼리 문자열은 ?으로 시작하지 않으므로 없습니다. 따라서 해당 변수가 $_GET에 존재하지 않습니다.
  3. do은 공백을 URL의 경우 %20으로 다시 정의해야합니다.
    $url = 'http://www.site.com/search/?tab=names&workername=firstname%20lastname'; 
        ^      ^       ^^^  ^
    


편집 :
변수를 GET으로 당신이 쿼리하려는 웹 사이트가 그들을 무시하는 것이 가능하다. 이 코드를 GET 요청이라고 명시 적으로 추가하려고 시도한 적이 있습니까? 당신은 당신의 텍스트를 urlencode 필요

$options = array(
    'http' => array('method' => "GET", 'header' => "Accept-language: en\r\n") 
); 
$context = stream_context_create($options); 
file_get_contents($url, false, $context); 
+0

그 중 아무 것도 문제가 아닙니다. 나는이 모든 것들을 실제로 가지고있다. 빠른 타이핑에 의한 오류로 인해 크게 생략되었다. 다른 생각은? – algorithmicCoder

+0

편집을 추가했지만이 기능에 실패 할 수있는 사항은 생각할 수 없습니다. URL은 여전히 ​​'% 20'으로 인코딩되어야합니다. 인코딩해야하는 이름이나성에 다른 문자가없는 것은 확실합니까? – animuson

+0

나는 URL 인코딩이 '+'가 공백 문자의 유효한 인코딩으로 허용된다는 것을 지적하고 싶다. – Wormbo

-2

는 :

$fixed= urlencode($workername); 
$url = 'http://www.example.com/search/?tab=names&workername='.$fixed; 
관련 문제