在PHP中,我試圖用正則表達式來驗證URL的路徑。 我已經測試目前正則表達式是這一個: ^(\/\w+)+\.\w+(\?(\w+=[\w\d]+(&\w+=[\w\d]+)+)+)*$
在PHP中驗證url的路徑
public function isValidPath($urlPath)
{
if (!preg_match("#^(\/\w+)+\.\w+(\?(\w+=[\w\d]+(&\w+=[\w\d]+)+)+)*$#i", $urlPath)) { return false; }
else { return true; }
}
$arrUrl = parse_url($url);
$urlPath = $arrUrl['path'];
// valid path ?
if(isValidPath($urlPath)) { echo "OK"; }
else { echo "Invalid Path URL"; }
不過,這並不與剛開始使用/
路徑工作。
-/-> valid path
- /aaa -> valid path
- /aaa/bbb -> valid path
- /aaa?q=x -> valid path
- aaa -> Not valid path
- /asd/asd./jsp -> Not valid path
- /asd/asd.jsp/ -> Not valid path
- /asd./asd.jsp -> Not valid path
- /asd///asd.js -> Not valid path
- /asd/asd.jsp&bar=baz?inga=42?quux -> Not valid path
我不是一個正則表達式專家,我打破了我的腦袋試圖做一個看起來很簡單的東西。
你是否正在尋找一個文件/頁面是否實際存在於所提供的URL? – cmorrissey
'filter_var('http://nothing.com'。$ urlPath,FILTER_VALIDATE_URL)'將驗證URL – cmorrissey
@cmorrissey'FILTER_VALIDATE_URL'不適用於這個例子'http://somesite.com/asd/asd。 jsp&bar = baz?inga = 42?quux' - https://ideone.com/BRHXpU –