2013-06-19 82 views
0

的某一部分。如果我有像繩子鏈接:example.php?this=something&that=somethingelse返回一個字符串

如何我只等於什麼回報?所以:somethingelse

我試過pregmatch,但還沒有得到它的工作。我也不想使用substr,因爲我不確定'that'會有多長。

具體而言我有

user={$md5_id}&activ_code={$activ_code} 

被髮送到另一個功能,當然我能通過有源代碼作爲一個變量。但我很好奇。

+1

有沒有知道'that'兩端,其中的價值的可靠途徑?另一個參數?接近報價?什麼是完整的字符串? –

回答

1

請嘗試以下...

$str = "example.php?this=something&that=somethingelse"; 
$values = array(); 
$query = substr(strstr($str, "?"), 1); 

parse_str($query, $values); 

echo $values["that"]; 
+0

最適合我在做什麼!謝謝 – Alex

+0

高興地幫助:) –

4

您可以使用PHP的parse_url()函數來解析URL本身,parse_str()函數來分析它的參數

下面是一個例子片斷:

$url = "example.php?this=something&that=somethingelse"; 
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query, $result); 

有了上面的代碼,結果你之後會在$result['that']變量內

+0

我的確讀過原始問題,並且可以使用此代碼獲取OP所需的參數。我已經添加了一些示例代碼 –

4

使用parse_url(與PHP_URL_QUERY參數,因爲我們只想查詢部分(之後?)的UR L)和parse_str這樣:

<?php 
    $url = "example.php?this=something&that=somethingelse"; 

    parse_str(parse_url($url, PHP_URL_QUERY), $queryParams); 

    print_r($queryParams); 
    /* 
     Array 
     (
      [this] => something 
      [that] => somethingelse 
     ) 
    */ 
?> 

DEMO


如果你只有字符串user={$md5_id}&activ_code={$activ_code},你可以簡單地使用parse_str

<?php 
    $string = "user=ABC123&activ_code=DEF456"; 

    parse_str($string, $queryParams); 

    print_r($queryParams); 

    /* 
     Array 
     (
      [user] => ABC123 
      [activ_code] => DEF456 
     ) 
    */ 
?> 

DEMO

+0

它更多的是獲取作爲字符串傳遞的URL的特定部分,但如果我是正確的,這實際上可以用於多種用途。 – Alex

+0

@Alex Sure確實如此 - 隨意演示所提供的演示。 – h2ooooooo

+0

只需添加FYI即可。該問題包含一個部分URL,但正如parse_url的文檔所述:部分URL也被接受,parse_url()會盡力解析它們。所以parse_url()可能會中斷,但我相信它比使用substr()或正則表達式重新發明自己的輪子更值得信賴。 –

1

您可以使用substr()strstr()得到字符串的查詢部分(?後的所有內容):

$query = substr(strstr($url, '?'), 1) 

然後用parse_str()分析查詢字符串到變量

parse_str($query, $vars); 

你需要的變量是現在可用於$vars陣列:

$that = $vars['that']; 
1

下面是關於如何使用的完整示例和parse_str

示例代碼

$url = "http://test.com/example.php?this=something&that=somethingelse"; 

$url_breakdown = parse_url($url); 
parse_str($url_breakdown['query'], $url_params); 

print_r($url_breakdown); 
print_r($url_params); 

輸出

Array 
(
    [scheme] => http 
    [host] => test.com 
    [path] => /example.php 
    [query] => this=something&that=somethingelse 
) 
Array 
(
    [this] => something 
    [that] => somethingelse 
) 
1

與工作的preg_match

if(preg_match("/^.+that=(.+)&?$/", "example.php?this=something&that=somethingelse", $matches)) 
    print_r($matches); 

結果

Array 
(
    [0] => example.php?this=something&that=somethingelse 
    [1] => somethingelse 
) 
+0

我不會downvote,因爲它*做*工作 - 但真的嗎?正則表達式肯定不是這個工作。 – h2ooooooo

+0

也許你可能更具體爲什麼不呢? –