PHP에서 URL 매개 변수를 처리하는 것은 일반적인 작업입니다. 특히 다른 요구에 따라 URL을 동적으로 생성하고 수정해야 할 때. http_build_query 함수와 $ _get 어레이는 URL 매개 변수를 쉽게 구축하는 데 도움이되는 두 가지 공통 도구입니다. 오늘, 우리는 URL 매개 변수를 스플 라이스하고 조작하기 위해 더 간단한 방법을 사용하기 위해 둘 다 결합하는 방법에 대해 논의 할 것입니다.
HTTP_BUILD_QUERY 는 PHP의 내장 기능으로 연관 배열 또는 다차원 배열을 사용하여 URL 쿼리 문자열로 변환합니다. 이 기능은 쿼리 매개 변수를 신속하게 생성하는 데 도움이 될뿐만 아니라 URL을 자동으로 인코딩하여 쿼리 문자열이 URL 표준을 준수하는지 확인합니다.
<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">$query_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-string">"&"</span></span><span> ]] )
</span></span>
$ query_data : 키 값 쌍이 포함 된 연관 배열은 쿼리 문자열로 변환됩니다.
$ numeric_prefix : 배열의 키가 숫자 인 경우 해당 키를 접두사하도록 선택할 수 있습니다.
$ arg_separator : 여러 매개 변수 사이의 분리기를 지정하고 기본값은 & 입니다.
여러 매개 변수가 포함 된 배열이 있다고 가정 해 봅시다.이 매개 변수를 완전한 URL 쿼리 문자열로 어떻게 분류합니까? 현재 http_build_query가 도움을 줄 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// 스 플라이 싱 URL 매개 변수</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 class="hljs-comment">// 산출: search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 방법을 통해 표준 쿼리 문자열을 쉽게 생성 할 수 있습니다.
때로는 스 플라이 싱 쿼리 문자열을 기존 기본 URL에 추가해야합니다. 이는 단순히 쿼리 문자열을 기본 URL에 추가하여 달성 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$baseURL</span></span><span> = </span><span><span class="hljs-string">"https://example.com/products?"</span></span><span>;
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'page'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'sort'</span></span><span> => </span><span><span class="hljs-string">'asc'</span></span><span>,
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>
];
</span><span><span class="hljs-comment">// 스 플라이 싱查询字符串</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-comment">// 완벽한 URL</span></span><span>
</span><span><span class="hljs-variable">$fullURL</span></span><span> = </span><span><span class="hljs-variable">$baseURL</span></span><span> . </span><span><span class="hljs-variable">$queryString</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fullURL</span></span><span>;
</span><span><span class="hljs-comment">// 산출: https://example.com/products?search=PHP&page=2&sort=asc&category=programming</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
$ _get은 URL에서 쿼리 문자열의 값을 가져 오는 PHP Hyperglobal 어레이입니다. 사용자가 쿼리 매개 변수로 URL에 액세스하면 $ _get은 이러한 매개 변수를 배열에 자동으로 구문 분석합니다. 예를 들어, https://example.com/?search=php&page=2를 방문 할 때 $ _get [ 'Search']를 통해 매개 변수 검색 값을 얻을 수 있습니다.
현재 URL에서 모든 매개 변수를 얻고 필요에 따라 새 매개 변수를 수정하거나 추가하려고한다고 가정하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 전류를 가정합니다 URL ~을 위한: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// $_GET 数组会自动包含查询매개 변수</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 添加新的매개 변수</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'sort'</span></span><span>] = </span><span><span class="hljs-string">'desc'</span></span><span>;
</span><span><span class="hljs-comment">// 사용 http_build_query 스 플라이 싱更新后的查询字符串</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// 산출: search=PHP&page=2&sort=desc</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
때로는 전체 쿼리 문자열을 재구성하는 대신 URL에서 특정 매개 변수를 수정하려고합니다. $ _get 어레이에서 해당 키를 수정 한 다음 http_build_query를 사용하여 새 쿼리 문자열을 생성 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 전류를 가정합니다 URL ~을 위한: https://example.com/?search=PHP&page=2</span></span><span>
</span><span><span class="hljs-comment">// 获取当前매개 변수</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>;
</span><span><span class="hljs-comment">// 修改某个매개 변수</span></span><span>
</span><span><span class="hljs-variable">$currentParams</span></span><span>[</span><span><span class="hljs-string">'page'</span></span><span>] = </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-comment">// 사용 http_build_query 새 쿼리 문자열을 생성하십시오</span></span><span>
</span><span><span class="hljs-variable">$newQueryString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">http_build_query</span></span><span>(</span><span><span class="hljs-variable">$currentParams</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newQueryString</span></span><span>;
</span><span><span class="hljs-comment">// 산출: search=PHP&page=3</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
http_build_query는 다차원 배열 처리를 지원합니다. 중첩 된 배열이있는 경우 기능이 자동으로 평평하게 평평 해지고 기준을 준수하는 쿼리 문자열이 생성됩니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$params</span></span><span> = [
</span><span><span class="hljs-string">'search'</span></span><span> => </span><span><span class="hljs-string">'PHP'</span></span><span>,
</span><span><span class="hljs-string">'filters'</span></span><span> => [
</span><span><span class="hljs-string">'category'</span></span><span> => </span><span><span class="hljs-string">'programming'</span></span><span>,
</span><span><span class="hljs-string">'price'</span></span><span> => </span><span><span class="hljs-string">'low'</span></span><span>
]
];
</span><span><span class="hljs-comment">// 사용 http_build_query 스 플라이 싱多维数组</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 class="hljs-comment">// 산출: search=PHP&filters%5Bcategory%5D=programming&filters%5Bprice%5D=low</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예에서 HTTP_BUILD_QUERY는 중첩 배열을 자동으로 처리하고 URL 쿼리 문자열 형식을 준수하는 결과를 생성합니다.
http_build_query 및 $ _get 어레이는 PHP에서 매우 실용적인 도구이므로 URL 매개 변수의 처리를 단순화하는 데 도움이됩니다. 이러한 도구를 합리적으로 사용함으로써 URL 매개 변수를 효율적으로 스플릿하고 기존 매개 변수를 수정하며 복잡한 다차원 배열을 처리 할 수 있습니다. 이러한 기술을 마스터하면 개발 과정에서 노력의 절반으로 결과의 두 배를 달성 할 수 있습니다.