2009-11-05 3 views
0

약 5 개의 URL 변수를 포함하는 PHP 스크립트 다중 URL (약 15 개)을 한 번에 보냅니다. 내 스크립트에서는 두 개의 백 슬래시 (앞에서 스크립트에 추가 한 URL)를 개별 URL로 분할 한 다음 각 개별 URL을 컬링하여 개별 URL로 파싱합니다. 그러나 스크립트를 실행하면 "&"기호까지의 URL 만 허용됩니다. 전체 덩어리를 가지고 싶습니다. 나중에 스크립트에서 나눌 수 있습니다. 이 문제에 접근하는 가장 좋은 방법은 무엇일까요?php get url을 여러 변수로 구문 분석합니다.

감사합니다.

난 내 스크립트의 URL 청크 보낼 때 발생의 예 :

<?php 
    /* 
    $url variable being sent to script: 
    http://www.test1.com?q1=a&q2=b&q3=c&q4=d\\http://www.test2.com?r1=a&r2=b&r3=c&r4=d\\http://www.test3.com?q1=a&q2=b&q3=c&q4=d\\http://www.test4.com?e1=a&e2=b&e3=c&e4=d 
    */ 

    $url = $_GET['url']; 

    echo $url; // returns http://www.test1.com?q1=a 

    //later on in my script, i just need to curl each "\\" seperated url 
    ?> 
+0

이것은 매우 유사합니다. URL의 인코딩으로 고소하십시오 -이 데이터는 처음에 쿼리 문자열에 어떻게 도달합니까? –

답변

1

(데이터) URL을 스크립트 요청에 추가하기 전에 urlencode()해야합니다. 그렇지 않으면

은, PHP는 볼 것입니다 listOfUrls = http://someurl.com/?someVar=SomeVal& 인해 문자에, 바로 거기 중지 "&"

당신이 같은 시도 할 수 PHP에서 쿼리 문자열을 구축하는 경우 :

<?PHP 
//imagine $urls is an array of urls 
$qs = '?urls='; 
foreach($urls as $u){ 
    $q .= urlencode($u) .'\\'; 
} 

또한 URL의 [] 표기법을 사용하여 재생할 수 있다고 생각합니다. 그래야 GET의 다른 쪽에서 "\"와 같은 일부 구분 기호를 구문 분석하지 않고도 URL을 깨끗하게 정리할 수 있습니다.

+0

+1 [] 표기 –

0

$ _GET 배열은 앰퍼샌드에 분할에 의해 형성된다. URL을 매개 변수로 전달하기 전에 URL 인코딩합니다. PHP는 그들을 디코딩해야합니다.

예 : 통과 url=http://www.test1.com?q1=a%26q2=b%26q3=c%26q4=d\\http://www.test2.com?r1=a%26r2=b%26r3=c%26r4=d\\http://www.test3.com?q1=a%26q2=b%26q3=c%26q4=d\\http://www.test4.com?e1=a%26e2=b%26e3=c%26e4=d

당신은 array에 매개 변수를 설정하여 멀리 '\\'로 할 수 있습니다. 예 : 사용 url[]=http://www.test1.com?q1=a%26q2=b%26q3=c%26q4=d&url[]=http://www.test2.com?r1=a%26r2=b%26r3=c%26r4=d&url[]=http://www.test3.com?q1=a%26q2=b%26q3=c%26q4=d&url[]=http://www.test4.com?e1=a%26e2=b%26e3=c%26e4=d

0

URL 매개 변수를 인코딩하지 않았으므로 처음의 & 이후의 내용은 모두 원래 URL의 매개 변수로 처리됩니다.

관련 문제