2010-01-30 3 views
4

구분 된 문자열에서 연관 배열을 생성하기 위해 PHP에 이미 존재하는 함수가 있습니까? 그렇지 않다면 가장 효과적인 방법은 무엇일까요? 내가 요청과 응답 형식은 다음과 페이팔의 새로운 NVP의 API에서 찾고 :PHP에서 폭발하는 것과 비슷한 키 - 값 쌍을위한 방법?

method=blah&name=joe&id=joeuser&age=33&stuff=junk 

내가 배열 값에 각 쌍을 얻을 explode()를 사용할 수 있지만, 나는 어떤 종류의 할 수있는 경우가 더 나은 것 dictionary_explode 같은 기능과 키 - 값 구분 기호를 표시하고 같은 연관 배열을 다시 얻을 :

Array { 
[method] => blah 
[name] => joe 
[id] => joeuser 
[age] => 33 
[stuff] => junk 

가}

내 CS 친구들이 아이디어는 파이썬과 같은 다른 언어로 존재한다는 것을 말해, 그래서 난을 내가 궁금한가? PHP와 같은 것을 발견하지 못했습니다. 지금은 array_walk을보고 있지만 좀 더 미리 만들어진 것을 선호합니다.

답변

12

PHP는 그것을위한 붙박이 기능이 있습니다 parse_str()

<?php 
$str = "first=value&arr[]=foo+bar&arr[]=baz"; 
parse_str($str); 
echo $first; // value 
echo $arr[0]; // foo bar 
echo $arr[1]; // baz 

parse_str($str, $output); 
echo $output['first']; // value 
echo $output['arr'][0]; // foo bar 
echo $output['arr'][1]; // baz 

?> 

참고 : 내 추천 하지이다 register_globals 나쁜 같은 이유로 첫 번째 양식 (parse_str($str))를 사용합니다. 두 번째 형식 (parse_str($str, $arr))이 항상 선호됩니다.

+0

+1 나는 그 기능을 몇 주 전에 만났을 때 너무 기뻤습니다. 두 번째 함수는 조작 된 쿼리가 동일한 이름의 전역 변수를 덮어 쓰지 못하도록합니다. –

+0

정말 토큰을 정의 할 수있는 곳이 필요했습니다 (따라서 x = y & a = b 모델에 국한되지 않음). 실제로 원하는 토큰을 전달하는 함수를 만들어 문자열을 대체 한 다음 parse_str 및 반환합니다. 배열, 그래서 이것은 내가 염두에 두었던 것과 아주 가까운 댕이다. 고마워! – Anthony

관련 문제