수색…


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_QUERYPHP_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&parameter2=bar

http_build_query() 는 다차원 배열에서도 작동합니다.

$parameters = array(
    "parameter3" => array(
        "sub1" => "foo",
        "sub2" => "bar",
    ),
    "parameter4" => "baz",
);
$queryString = http_build_query($parameters);

$queryString 값은 다음과 같습니다.

parameter3%5Bsub1%5D=foo&parameter3%5Bsub2%5D=bar&parameter4=baz

URL 인코딩 버전 인

parameter3[sub1]=foo&parameter3[sub2]=bar&parameter4=baz


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow