itsource

URL 문자열에서 파라미터를 가져오려면 어떻게 해야 하나요?

mycopycode 2022. 9. 30. 11:09
반응형

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'];

만약 당신이 그것을 얻기를 원한다면$urlPHP를 사용하여 동적으로 다음 질문을 살펴보십시오.

PHP에서 전체 URL 가져오기

다음 이후의 모든 파라미터?를 사용하여 액세스 할 수 있습니다.$_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

놀라운 훨씬 안전한 답변은 아직 여기에 언급되지 않았습니다.

filter_input

따라서 질문의 경우 이를 사용하여 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

반응형