2014-01-18 4 views
0

그래서 나는연관 배열로 검색 URL을 분할하는 방법

Q = 사탕무 & QF = 야채 & 범위 = 시간이 같은 문자열을 싶습니다 : [34-40]

으로 분할하고 연관 배열에 넣고 Solr 서버로 보낼 수 있습니다.

나는 그것을 ', [사탕무 [QF'] => [ '야채']

후이

[ 'Q'] =>] '과 같이 할 사용를 urlencode I는

Q + 3DSugar %의 사탕무 % 26qf % 3Dvegetables % 26range % 3Dtime % 3A % 5B34-40 %를 얻을 5D

,

이제 preg_split()을 사용하고 &과 = 기호 또는 = 및 & 기호 사이에서 정보를 가져 오는 두 개의 개별 배열을 만들겠다고 생각했지만 이것이 최종 및 첫 번째 문제를 남깁니다. &으로 시작하거나 &으로 끝나지 마십시오.

이 후, 두 배열을 가져 와서 array_combine()과 결합해야합니다.

그래서 문자열의 첫 번째 항목과 마지막 항목의 문제를 해결하는 preg_split을 어떻게 수행 할 수 있습니까? 서버에서 너무 까다로운 일을하는 방법입니까? 어떤 도움을 주셔서 감사합니다.

추신 : 나는 이것을 분할하기 위해 Drupal ApacheSolr을 사용하고 있습니다. 그래서 이것을 분할해야합니다. 예를 들어 q와 qf를 다르게 빌드하려는 객체로 전송해야합니다.

답변

1

쿼리 문자열을 구문 분석하기 위해 정규식이 필요하지 않습니다. PHP는 이미 이와 같은 기능을 내장하고 있습니다. parse_str() 사용

$str = 'q=Sugar Beet&qf=vegetables&range=time:[34-40]'; 
parse_str($str, $params); 
print_r($params); 

출력을 생성합니다 : 또한

Array 
(
    [q] => Sugar Beet 
    [qf] => vegetables 
    [range] => time:[34-40] 
) 
+0

이것은 완벽하게 작동합니다! 아주 큰 도움을 주셔서 감사합니다. 이제이 요청에 대해 urlencode를 사용해야합니까? – user3210277

+0

@ user3210277 : 원하는대로 달려 있습니다. 이것을'GET '이상으로 보내는 경우에는 그렇게하는 것이 좋습니다. –

0

:

parse_str($_SERVER['QUERY_STRING'], $params); 
관련 문제