2012-07-14 77 views
112

我有一個HTML表單字段$_POST["url"]有一些URL字符串作爲值。 示例值包括:如何從URL字符串中獲取參數?

 
https://example.com/test/[email protected] 
https://example.com/test/[email protected] 
https://example.com/test/[email protected] 
https://example.com/test/[email protected]&testin=123 
https://example.com/test/the-page-here/[email protected] 

如何我可以從這些URL /值只得到email參數?

請注意,我沒有從瀏覽器地址欄獲取這些字符串。

+0

我有點困惑,請詳細說明Q ... – 2012-07-14 03:30:41

+0

請看編輯 – Autolycus 2012-07-14 03:33:01

+0

你是在說/要求URL被視爲字符串? – hjpotter92 2012-07-14 03:39:29

回答

252

您可以使用parse_url()parse_str()

$parts = parse_url($url); 
parse_str($parts['query'], $query); 
echo $query['email']; 

如果你想用PHP來獲得$url動態,看看這個問題:

Get the full URL in PHP

+2

喜歡這個thx。 – mghhgm 2017-03-14 12:37:48

+0

這在我看來是非常mantabs – 2017-03-26 17:48:08

+1

mantabs?這是一個錯字還是更多的證據表明我是多麼不自在? :) – rinogo 2017-08-25 20:04:18

68

?之後的所有參數都可以使用$_GET數組訪問。所以,

echo $_GET['email']; 

將從URL中提取電子郵件。

+7

它不在url中......它的代碼中的網址 – Autolycus 2012-07-14 03:33:32

+17

這不是'問題的答案,但這是我在問谷歌的問題時尋找的答案,所以+1正確回答Google。 – BillyNair 2016-02-17 18:44:37

8

使用$ _GET [ '電子郵件']在URL參數。 使用$ _POST ['email']將發佈的數據寫入腳本。 或者對兩者都使用_ $ REQUEST。另外,如前所述,您可以使用返回URL的所有部分的parse_url()函數。使用稱爲'查詢'的部分 - 在那裏您可以找到您的電子郵件參數。更多信息:http://php.net/manual/en/function.parse-url.php

+2

OP表示他沒有從'地址欄'獲取網址。這些URL只是代碼中的「IN」字符串。 – DavChana 2012-07-14 06:12:39

26

使用parse_url()parse_str()方法。 parse_url()會將URL字符串解析爲其部分的關聯數組。由於您只需要網址的單個部分,因此您可以使用快捷方式僅用所需的部分返回字符串值。接下來,parse_str()將爲查詢字符串中的每個參數創建變量。我不喜歡污染當前上下文,因此提供第二個參數會將所有變量放入關聯數組中。

$url = "https://mysite.com/test/[email protected]&testin=123"; 
$query_str = parse_url($url, PHP_URL_QUERY); 
parse_str($query_str, $query_params); 
print_r($query_params); 

//Output: Array ([email] => [email protected] [testin] => 123) 
4

您可以使用下面的代碼獲取電子郵件地址後?在URL

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

+1

OP請求從字符串中提取變量,而不是當前頁面中的URL。假設字符串格式正確,parse_url()是正確答案。 – Bloafer 2016-02-08 10:44:05

0
$uri = $_SERVER["REQUEST_URI"]; 
$uriArray = explode('/', $uri); 
$page_url = $uriArray[1]; 
$page_url2 = $uriArray[2]; 
echo $page_url; <- see the value 

這是使用PHP

2

我創建功能from @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 protected]"; 
echo get_valueFromStringUrl($url , "email"); 

由於@Ruel

-4

你可以使用filter_input() 見PHP手冊

+2

這是一個可怕的答案。你介意添加一個例子嗎? – Antti29 2017-05-08 12:45:32

0

你可以得到的參數這樣的網址:

email = $_GET["email"]; 

..或像這樣:

$url = $_SERVER["REQUEST_URI"]; 
$email = str_replace("/path/to/file.php?email=", "", $url); 

路徑的實例文件:

如果URL是這樣的:

https://example.com/file.php 

那麼路徑文件是:

/file.php (+ parameter to get. Example: ?email=)