수색…
URL 파싱
URL을 개별 구성 요소로 분리하려면 parse_url()
.
$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$parts = parse_url($url);
위의 실행 후, $parts
의 내용은 다음과 같습니다.
Array
(
[scheme] => http
[host] => www.example.com
[path] => /page
[query] => foo=1&bar=baz
[fragment] => anchor
)
선택적으로 URL의 한 구성 요소 만 반환 할 수도 있습니다. querystring 만 반환하려면 다음을 수행하십시오.
$url = 'http://www.example.com/page?foo=1&bar=baz#anchor';
$queryString = parse_url($url, PHP_URL_QUERY);
허용되는 상수는 PHP_URL_SCHEME
, PHP_URL_HOST
, PHP_URL_PORT
, PHP_URL_USER
, PHP_URL_PASS
, PHP_URL_PATH
, PHP_URL_QUERY
및 PHP_URL_FRAGMENT
입니다.
쿼리 문자열을 키 값 쌍으로 더 파싱하려면 parse_str()
.
$params = [];
parse_str($queryString, $params);
위의 실행 후 $params
배열은 다음과 같이 채워집니다.
Array
(
[foo] => 1
[bar] => baz
)
다른 URL로 리디렉션
header()
함수를 사용하여 브라우저가 다른 URL로 리디렉션하도록 지시 할 수 있습니다.
$url = 'https://example.org/foo/bar';
if (!headers_sent()) { // check headers - you can not send headers if they already sent
header('Location: ' . $url);
exit; // protects from code being executed after redirect request
} else {
throw new Exception('Cannot redirect, headers already sent');
}
상대 URL로 리디렉션 할 수도 있습니다 (공식 HTTP 사양의 일부는 아니지만 모든 브라우저에서 작동합니다).
$url = 'foo/bar';
if (!headers_sent()) {
header('Location: ' . $url);
exit;
} else {
throw new Exception('Cannot redirect, headers already sent');
}
헤더가 전송 된 경우 meta refresh
HTML 태그를 보낼 수도 있습니다.
경고 : 메타 새로 고침 태그는 HTML이 클라이언트에 의해 적절하게 처리되는 것에 의존하며, 일부는이를 수행하지 않습니다. 일반적으로 웹 브라우저에서만 작동합니다. 또한 헤더가 전송 된 경우 버그가있을 수 있으며 예외가 발생해야합니다.
메타 새로 고침 태그를 무시하는 클라이언트의 경우 사용자가 클릭 할 수있는 링크를 인쇄 할 수도 있습니다.
$url = 'https://example.org/foo/bar';
if (!headers_sent()) {
header('Location: ' . $url);
} else {
$saveUrl = htmlspecialchars($url); // protects from browser seeing url as HTML
// tells browser to redirect page to $saveUrl after 0 seconds
print '<meta http-equiv="refresh" content="0; url=' . $saveUrl . '">';
// shows link for user
print '<p>Please continue to <a href="' . $saveUrl . '">' . $saveUrl . '</a></p>';
}
exit;
배열에서 URL 인코딩 된 쿼리 문자열 작성
http_build_query()
는 배열이나 객체로부터 질의 문자열을 생성합니다. 이러한 문자열은 URL에 추가하여 GET 요청을 만들거나 POST 요청 (예 : cURL)에 사용할 수 있습니다.
$parameters = array(
'parameter1' => 'foo',
'parameter2' => 'bar',
);
$queryString = http_build_query($parameters);
$queryString
값은 다음과 같습니다.
parameter1=foo¶meter2=bar
http_build_query()
는 다차원 배열에서도 작동합니다.
$parameters = array(
"parameter3" => array(
"sub1" => "foo",
"sub2" => "bar",
),
"parameter4" => "baz",
);
$queryString = http_build_query($parameters);
$queryString
값은 다음과 같습니다.
parameter3%5Bsub1%5D=foo¶meter3%5Bsub2%5D=bar¶meter4=baz
URL 인코딩 버전 인
parameter3[sub1]=foo¶meter3[sub2]=bar¶meter4=baz