2014-03-27 69 views
0

我需要一個將從URL中排除文件名的正則表達式。正則表達式從url中排除文件名

輸入:'something.something.com/som/som/som/abcd.html'

應返回:'something.something.com/som/som/som/'

我創造了這個正則表達式:

((?:[a-z0-9\.\_]+)(?:\/)(?:.*?)(?:\/))(?:[a-z0-9]+)(?:\.)(?:[a-z0-9]+)

我試着盡我所能和它給正確的輸出(在regex101.com [PCRE測試])。

我需要添加/刪除其他東西嗎?還有什麼建議?並且不建議使用parse_url(),如果URL沒有「http://」,則沒用。

+0

這就是爲什麼你檢查'//:'和'添加「HTTP://'沒有找到。 – AbraCadaver

+0

感謝@AbraCadaver進行編輯。下次會照顧它。 :) – PrashantKumar96

回答

0

使用PHP:

$dir = dirname("something.something.com/som/som/som/abcd.html"); 

使用正則表達式:

$dir = preg_replace("|[^/]+\.[^/]+$|", "$1", $dir); 
+0

dirname()做的伎倆,但正則表達式不起作用 – PrashantKumar96

+0

是的,正則表達式是一個很好的事情,但它可能會失敗的一些特殊情況。這就是爲什麼它更好地使用那些專用於特殊用途的功能。 –