PHP 개발에서 우리는 종종 URL 쿼리 문자열과 배열 사이의 상호 변환을 처리합니다. 예를 들어, 프론트 엔드의 양식을 통해 제출 된 데이터는 쿼리 문자열 형식으로 백엔드로 전달되며 백엔드 처리 중에는 데이터를 조작하기 위해 배열로 변환해야합니다. 반대로 URL을 구축 할 때 배열을 쿼리 문자열로 다시 변환해야합니다.
PHP는이 기능을 구현하기위한 HTTP_BUILD_QUERY 와 PARSE_STR의 두 가지 매우 편리한 기능을 제공합니다.
http_build_query 함수는 배열을 URL에 인코딩 된 쿼리 문자열로 변환 할 수 있습니다. GET 요청에 대한 매개 변수를 구성하는 데 일반적으로 사용됩니다.
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$numeric_prefix</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>, ?</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$arg_separator</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$encoding_type</span></span><span> = PHP_QUERY_RFC1738)
</span></span>
<span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'장 산'</span></span><span>,
</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>,
</span><span><span class="hljs-string">'hobbies'</span></span><span> => [</span><span><span class="hljs-string">'reading'</span></span><span>, </span><span><span class="hljs-string">'coding'</span></span><span>]
];
</span><span><span class="hljs-variable">$queryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span></span>
<span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89&age=</span><span><span class="hljs-number">25</span></span><span>&hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading&hobbies%5B1%5D=coding
</span></span>
참고 : 기본적으로 배열은 취미 [0] = Reading & Hobbies [1] = 코딩과 같은 첨자 형식으로 직렬화됩니다.
사용자 정의 구분 기호 또는 인코딩 방법이 필요한 경우 추가 매개 변수를 사용하여 제어 할 수 있습니다. 예를 들어, 구분 기호를 세미콜론으로 변경하십시오.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$params</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">';'</span></span><span>);
</span></span>
출력 결과 :
<span><span>name=%E5%BC%A</span><span><span class="hljs-number">0</span></span><span>%E4%B8%89;age=</span><span><span class="hljs-number">25</span></span><span>;hobbies%5B</span><span><span class="hljs-number">0</span></span><span>%5D=reading;hobbies%5B1%5D=coding
</span></span>
parse_str 함수는 URL 쿼리 문자열을 배열 또는 변수로 구문 분석 할 수 있으며 종종 요청 또는 사용자 정의 문자열을 구문 분석하는 데 사용됩니다.
<span><span><span class="hljs-keyword">void</span></span><span> </span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$result</span></span><span>)
</span></span>
<span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">'name=%E5%BC%A0%E4%B8%89&age=25&hobbies%5B0%5D=reading&hobbies%5B1%5D=coding'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">parse_str</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>, </span><span><span class="hljs-variable">$output</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$output</span></span><span>);
</span></span>
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[name] => 장 산
[age] => </span><span><span class="hljs-number">25</span></span><span>
[hobbies] => </span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => reading
[</span><span><span class="hljs-number">1</span></span><span>] => coding
)
)
</span></span>
참고 : parse_str은 기본적으로 변수를 현재 범위에 할당하며, 두 번째 매개 변수가 제공되지 않으면 변수는 현재 범위에 변수 이름으로 표시되므로 일부 경우 변수 덮어 쓰기를 유발할 수 있으므로 항상 두 번째 매개 변수를 대상 배열로 제공하는 것이 좋습니다.
프론트 엔드 양식 시뮬레이션 : 배열을 쿼리 문자열로 변환하고 GET 요청을 시뮬레이션합니다.
URL 재 작성 및 점프 : 동적 URL을 생성 할 때 매개 변수를 빌드하십시오.
인터페이스 요청 : API 요청을 보낼 때 스플 라이스 매개 변수.
매개 변수 디버깅 도구 : 매개 변수 문자열을 빌드하는 데 사용되거나 파스 디버깅 리턴.
http_build_query 및 parse_str를 사용하면 배열과 URL 쿼리 문자열 사이에서 서로를 쉽게 변환 할 수 있습니다. 이 두 기능은 간단하고 사용하기 쉬울뿐만 아니라 강력합니다. 매일 PHP 개발에서 매개 변수 전송을 처리하기위한 필수 도구입니다. 그것들을 마스터하면 URL 데이터 상호 작용을 처리하는 데있어 효율성을 크게 향상시킬 수 있습니다.