2011-06-30 111 views
2

正則表達式是我的bete noire,任何人都可以幫助我從URL中分離字符串?使用正則表達式從URL獲取字符串?

我想從可能出現在任何的從輸入形式通過以下方式獲取URL網頁名稱:

https://www.facebook.com/PAGENAME?sk=wall&filter=2 
http://www.facebook.com/PAGENAME?sk=wall&filter=2 
www.facebook.com/PAGENAME 
facebook.com/PAGENAME?sk=wall 

...等等。

我似乎無法找到一種方法來隔離.com/之後但在?(如果有的話)之前的字符串。它是preg_match,替換還是拆分?

如果任何人可以推薦一個特別清晰和介紹性的正則表達式指南,他們發現有用的,這將不勝感激。

回答

6

可以使用parse_url功能,然後從URL路徑得到的最後一段:

$parts=parse_url($url); 
$path_parts=explode("/", $parts["path"]); 
$page=$path_parts[count($path_parts)-1]; 
+0

典型。直到你需要一小時之前,你才知道PHP函數是存在的。 –

+0

如下所示,使用內置參數會更好。 – RReverser

+1

@RReverser只有當路徑是「/ pagename」時,你的解決方案纔有效,但如果它是「/ path/to/pagename」,它將返回錯誤的結果 – mck89

2

對於學習和測試正則表達式,我發現RegExr,一個在線工具,非常有用:http://gskinner.com/RegExr/

但正如其他人所說,解析具有相應功能的網址可能是在這種情況下更好。

+0

本來是一個很棒的評論。 – kapa

+1

有趣,讚賞。 –

0

使用不便,如:

substr(parse_url('https://www.facebook.com/PAGENAME?sk=wall&filter=2', PHP_URL_PATH), 1); 
相關問題