2012-07-21 86 views
0

所以我有一個字符串(即動態的)。這是$網址..現在的URL字符串有時是這樣的: http://site.com/blah123preg_match可能帶有問號的URL

http://site.com/blah123?blahblah

現在我已經做它

preg_match("/site.com\/(.*)/",$info[url],$matches); 
    $gethash = $matches[1]; 

,但它被揭去當有一個?標記語句後綴。

如何獲得斜線(/)和問號之間的所有內容,當出現問號時,但是當不存在問號時,只需在斜槓後面抓取所有內容(/)

回答

3

只排除?

preg_match('/site\.com\/([^?]*)/', $info[url], $matches); 
+0

僅供參考,這樣做是因爲正則表達式引擎試圖抓住儘可能多的字符可能(這是貪婪)。 「。」字符匹配任何字符,所以正則表達式引擎會繼續到字符串的末尾。通過告訴它不匹配問號,它會匹配,直到它不再匹配爲止,並在匹配文本中包括問號之前停下來。 – thirdender 2012-07-21 05:00:13

+0

這根本不起作用。 – 2012-07-21 05:00:30

+0

我認爲你可能需要跳過問號,因爲它在正則表達式中是特殊的,所以你會這樣做:'/site\\.com\\/([^\\?]*)/' – Alex 2012-07-21 05:09:12