개발 꿀팁/PHP

php가 url을 해석하여 url의 매개 변수를 얻고, url 매개 변수를 얻는 네 가지 방식

Jammie 2022. 9. 21. 14:40
반응형

이 글은 php가 url을 해석하여 url 중의 파라미터를 얻고 url 파라미터를 얻는 네 가지 방법을 소개하는데, 문자열 파라미터를 배열로, 파라미터를 문자열로 바꾸는 관련 지식을 다룬다. 본문 코드는 이해하기 쉬우니, 관심 있는 친구들이 함께 보자.

다음 코드는 php가 url을 분석하고 url의 매개변수를 얻는 것으로 코드는 다음과 같습니다

<?php

$url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&area=0&author=0&h=0®ion=0&s=1&page=1';

$arr = parse_url($url);

var_dump($arr);

$arr_query = convertUrlQuery($arr['query']);

var_dump($arr_query);

var_dump(getUrlQuery($arr_query));

/**

 * 문자열 인자를 배열로 바꾸기

 * @param $query

 * @return array array (size=10)

          'm' => string 'content' (length=7)

          'c' => string 'index' (length=5)

          'a' => string 'lists' (length=5)

          'catid' => string '6' (length=1)

          'area' => string '0' (length=1)

          'author' => string '0' (length=1)

          'h' => string '0' (length=1)

          'region' => string '0' (length=1)

          's' => string '1' (length=1)

          'page' => string '1' (length=1)

 */

function convertUrlQuery($query)

{

  $queryParts = explode('&', $query);

  $params = array();

  foreach ($queryParts as $param) {

    $item = explode('=', $param);

    $params[$item[0]] = $item[1];

  }

  return $params;

}

/**

 * 인자를 문자열로 바꾸기

 * @param $array_query

 * @return string string 'm=content&c=index&a=lists&catid=6&area=0&author=0&h=0®ion=0&s=1&page=1' (length=73)

 */

function getUrlQuery($array_query)

{

  $tmp = array();

  foreach($array_query as $k=>$param)

  {

    $tmp[] = $k.'='.$param;

  }

  $params = implode('&',$tmp);

  return $params;

}

네 가지 예를 통해 phpurl 매개 변수 획득 방법을 소개합니다.

이미 URL 매개변수를 알고 있는 경우, 우리는 자신의 상황에 따라 $_GE를 채택할 수 있다.T는 해당 매개변수 정보($_GET['name'])를 얻는데, 알 수 없는 경우 URL의 매개변수 정보를 얻는 방법은 무엇입니까?

첫 번째, $_SERVER 내장 배열 변수 활용

비교적 원시적인$_SERVER['QUERY_STRING']URL의 매개 변수는 일반적으로 이 변수를 사용하여 이와 유사한 데이터를 반환합니다. name=tank&sex=1
파일 이름을 포함하려면 $_SERVER["REQU]를 사용하십시오.EST_URI" (반환 유사: /index.php?)name=tank&sex=1)

두 번째, pathinfo 내장 함수 이용

코드는 다음과 같습니다.

?

2

3

4

<?php

$test = pathinfo("http://localhost/index.php");

print_r($test);

/*

결과는 다음과 같다

2

3

4

5

6

7

8

9

Array

(

   [dirname] => http://localhost //url 경로

   [basename] => index.php //전체 파일 이름

   [extension] => php //파일 이름 접미사

   [filename] => index //파일 이름

)

*/

?>

세 번째, parse_url 내장 함수 이용

코드는 다음과 같습니다.

?

2

3

4

<?php

$test = parse_url("http://localhost/index.php?name=tank&sex=1#top");

print_r($test);

/*

결과는 다음과 같다

Array

(

   [scheme] => http //使用什么协议

   [host] => localhost //호스트 이름

   [path] => /index.php //경로

   [query] => name=tank&sex=1 // 전달된 매개 변수

   [fragment] => top //후근의 닻점

)

*/

?>

넷째, basename 내장 함수 활용

코드는 다음과 같습니다.

?

<?php

$test = basename("http://localhost/index.php?name=tank&sex=1#top");

echo $test;

/*

결과는 다음과 같다

?

index.php?name=tank&sex=1#top

*/

?>
또 스스로 정규 매칭을 통해 필요한 값을 얻는 경우도 있다.이 방식은 비교적 정확하며, 효율은 잠시 고려하지 않습니다.
다음은 실천 아래 정규 처리 방법을 확장합니다.

코드는 다음과 같습니다.

?
<?php

preg_match_all("/(\w+=\w+)(#\w+)?/i","http://localhost/index.php?name=tank&sex=1#top",$match);

print_r($match);

/*

결과는 다음과 같다

Array

(

  [0] => Array

    (

      [0] => name=tank

      [1] => sex=1#top

    )

  [1] => Array

     (

      [0] => name=tank

       [1] => sex=1

     )

   [2] => Array

    (

       [0] =>

      [1] => #top

    )

)

*/

?>

 

반응형