반응형
이 글은 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
)
)
*/
?>
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
청구 사례다. PHPcurl (1) | 2022.09.21 |
---|---|
phpredis의 추가 및 삭제 작업 라이브러리 (0) | 2022.09.21 |
PHP 추첨의 새로운 방법, 멀티채널 추첨 지원 (1) | 2022.09.20 |
PHP 연쇄 조작은 call과 callstatic 마술 기법을 통해 실현되고 phpstorm은 주석을 통해 function을 추적한다 (0) | 2022.09.20 |
네이티브 PHP에서 네이티브 GD 라이브러리를 호출하여 포스터를 생성합니다 (0) | 2022.09.20 |