[php] URL 문자열에서 매개 변수를 얻는 방법?

$_POST["url"]URL 문자열을 값으로 갖는 HTML 양식 필드 가 있습니다. 예제 값은 다음과 같습니다.

https://example.com/test/1234?email=xyz@test.com
https://example.com/test/1234?basic=2&email=xyz2@test.com
https://example.com/test/1234?email=xyz3@test.com
https://example.com/test/1234?email=xyz4@test.com&testin=123
https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com

기타

email이 URL / 값에서 매개 변수 만 가져 오려면 어떻게 해야합니까?

브라우저 주소 표시 줄에서 이러한 문자열을 얻지 못했습니다.



답변

당신은 사용할 수 있습니다 parse_url()parse_str()그것을 위해를.

$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 ) 


답변

$_GET['email']URL의 매개 변수에 사용하십시오 . 사용 $_POST['email']스크립트에 게시 된 데이터에 대한. 또는 _$REQUEST둘 다 사용하십시오 . 또한 언급했듯이 parse_url()URL의 모든 부분을 반환 하는 함수를 사용할 수 있습니다 . ‘query’라는 부분을 사용하십시오-전자 메일 매개 변수를 찾을 수 있습니다. 추가 정보 : http://php.net/manual/en/function.parse-url.php


답변

아래 코드를 사용하여 이메일 주소를 얻을 수 있습니까? URL에서

<?php
if (isset($_GET['email'])) {
    echo $_GET['email'];
}


답변

다른 답변에서 언급했듯이 최상의 솔루션은

parse_url()

당신의 조합을 사용할 필요 parse_url()하고 parse_str().

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

또한 정규식을 사용 하여이 작업을 수행 할 수 있습니다 .

preg_match()

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


답변

@Ruel answer에서 함수 만들었습니다 . 이것을 사용할 수 있습니다 :

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 덕분에