$_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'];
$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 )
답변
$_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 덕분에