URL 문자열에서 파라미터를 가져오려면 어떻게 해야 하나요?
HTML 양식 필드가 있습니다.$_POST["url"]
값으로서 URL 문자열이 몇 개 있습니다.
값의 예는 다음과 같습니다.
https://example.com/test/1234?email=xyz@test.comhttps://example.com/test/1234?basic=2&email=xyz2@test.comhttps://example.com/test/1234?email=xyz3@test.comhttps://example.com/test/1234?email=xyz4@test.com&testin=123https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com
기타.
어떻게 하면 이 데이터만email
파라미터는 다음 URL/값에서 얻을 수 있습니까?
브라우저의 주소창에서 이 문자열은 얻을 수 없습니다.
그 경우는, 와 를 사용할 수 있습니다.
$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];
만약 당신이 그것을 얻기를 원한다면$url
PHP를 사용하여 동적으로 다음 질문을 살펴보십시오.
다음 이후의 모든 파라미터?
를 사용하여 액세스 할 수 있습니다.$_GET
배열. 그래서...
echo $_GET['email'];
는 URL 에서 전자 메일을 추출합니다.
parse_url() 및 parse_str() 메서드를 사용합니다. parse_url()
는 URL 문자열을 해당 부분의 관련 배열로 해석합니다.URL의 단일 부분만 사용하기 때문에 바로 가기를 사용하여 원하는 부분만 문자열 값을 반환할 수 있습니다.다음 분.parse_str()
는 쿼리 문자열의 각 파라미터에 대한 변수를 만듭니다.현재 콘텍스트를 오염시키는 것을 좋아하지 않기 때문에 두 번째 파라미터를 지정하면 모든 변수가 연관 배열에 추가됩니다.
$url = "https://mysite.com/test/1234?email=xyz4@test.com&testin=123";
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
print_r($query_params);
//Output: Array ( [email] => xyz4@test.com [testin] => 123 )
다른 답변에서 설명한 바와 같이 최적의 솔루션은 을 사용하는 것입니다.
를 조합하여 사용해야 합니다.parse_url()
및 를 참조해 주세요.
그parse_url()
를 사용하여 쿼리 문자열을 얻을 수 있는 URL을 해석하고 컴포넌트를 반환합니다.query
열쇠. 그럼 이 키를parse_str()
쿼리 문자열을 해석하고 값을 변수로 반환합니다.
$url = "https://example.com/test/1234?basic=2&email=xyz2@test.com";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // xyz2@test.com
또한 regex를 사용하여 이 작업을 수행할 수도 있습니다.
사용할 수 있습니다.preg_match()
URL에서 쿼리 문자열의 특정 값을 가져옵니다.
preg_match("/&?email=([^&]+)/", $url, $matches);
echo $matches[1]; // xyz2@test.com
preg_replace()
또,preg_replace()
이 일을 한 줄로 할 수 있다!
$email = preg_replace("/^https?:\/\/.*\?.*email=([^&]+).*$/", "$1", $url);
// xyz2@test.com
사용하다$_GET['email']
를 사용합니다.$_POST['email']
스크립팅할 게시된 데이터의 경우.또는 사용_$REQUEST
둘 다요.또, 전술한 바와 같이,parse_url()
URL의 모든 부분을 반환하는 함수입니다. '쿼리'라는 부분을 사용하면 이메일 매개 변수를 찾을 수 있습니다.상세정보 : http://php.net/manual/en/function.parse-url.php
다음 코드를 사용하여 다음 후 이메일 주소를 얻을 수 있습니다.?
를 참조해 주세요
<?php
if (isset($_GET['email'])) {
echo $_GET['email'];
}
다음을 사용할 수 있습니다.
function get_valueFromStringUrl($url , $parameter_name)
{
$parts = parse_url($url);
if(isset($parts['query']))
{
parse_str($parts['query'], $query);
if(isset($query[$parameter_name]))
{
return $query[$parameter_name];
}
else
{
return null;
}
}
else
{
return null;
}
}
예:
$url = "https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com";
echo get_valueFromStringUrl($url , "email");
@Ruel 덕분입니다.
$web_url = 'http://www.writephponline.com?name=shubham&email=singh@gmail.com';
$query = parse_url($web_url, PHP_URL_QUERY);
parse_str($query, $queryArray);
echo "Name: " . $queryArray['name']; // Result: shubham
echo "EMail: " . $queryArray['email']; // Result:singh@gmail.com
놀라운 훨씬 안전한 답변은 아직 여기에 언급되지 않았습니다.
따라서 질문의 경우 이를 사용하여 URL get 파라미터에서 이메일 값을 얻을 수 있습니다.
$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );
다른 유형의 변수에서는 다음과 같은 다른/적절한 필터를 선택할 수 있습니다.FILTER_SANITIZE_STRING
.
이 답변은 URL 파라미터에서 미가공 데이터를 가져오는 질문 이상의 기능을 할 수 있다고 생각합니다.그러나 이것은 다음과 같은 한 줄 단축키입니다.
$email = $_GET['email'];
$email = filter_var( $email, FILTER_SANITIZE_EMAIL );
이런 식으로 변수를 잡는 습관을 들이는 게 좋을 거야
$uri = $_SERVER["REQUEST_URI"];
$uriArray = explode('/', $uri);
$page_url = $uriArray[1];
$page_url2 = $uriArray[2];
echo $page_url; <- See the value
이것은 PHP를 사용하고 있는 나에게 있어서 매우 효과적입니다.
라라벨에서는 다음을 사용하고 있습니다.
private function getValueFromString(string $string, string $key)
{
parse_str(parse_url($string, PHP_URL_QUERY), $result);
return isset($result[$key]) ? $result[$key] : null;
}
문자열 URL을 해석하여 URL에 전달된 쿼리 파라미터 값을 가져오는 동적 함수:
function getParamFromUrl($url, $paramName){
parse_str(parse_url($url, PHP_URL_QUERY), $op); // Fetch query parameters from a string and convert to an associative array
return array_key_exists($paramName, $op) ? $op[$paramName] : "Not Found"; // Check if the key exists in this array
}
함수를 호출하여 결과를 얻습니다.
echo getParamFromUrl('https://google.co.in?name=james&surname=bond', 'surname'); // "bond" will be output here
언급URL : https://stackoverflow.com/questions/11480763/how-can-i-get-parameters-from-a-url-string
'itsource' 카테고리의 다른 글
onChange of html 선택 시 매개 변수를 전달하는 방법 (0) | 2022.09.30 |
---|---|
PHP의 count() 함수는 O(1)입니까, O(n)입니까? (0) | 2022.09.30 |
json 필드를 여러 행으로 분할하는 방법 (0) | 2022.09.30 |
MySQL Workbench를 사용하여 MySQL 데이터베이스 백업을 수행하는 방법 (0) | 2022.09.30 |
JavaScript에서 HTML 엔티티의 이스케이프를 해제하시겠습니까? (0) | 2022.09.30 |