[英]Best Practice for Validating URLs
我有一種從用戶那里獲得一些網址的表格。 例如:網址,Facebook地址,Twitter地址,Google +地址等。我的問題是,當這些URL提交表單時,如何驗證它們。 我嘗試使用FILTER_VALIDATE_URL或簡單地使用正則表達式來驗證PHP中的URL。
在這里,我想知道從用戶那里獲得此類url的最佳方法是什么。 讓他們輸入協議總是好事嗎? 有時他們可能不知道它是http,https,ftp,ftps ..等。我認為某些用戶很難做到這一點。
我使用FILTER_VALIDATE_URL嘗試過類似的操作,但是它始終使用協議,有時我會混淆其工作方式。
// validate url
$url = 'http://www.example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
輸出:有效
// validate url
$url = 'hp://www.example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
輸出:有效
// validate url
$url = 'http://example.com';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
輸出:有效
// validate url
$url = 'http://example.com?id=32&name=kamalani';
if (filter_var( $url, FILTER_VALIDATE_URL)){
echo "<br>valid";
} else {
echo "<br>invalid";
}
OUTPUT : valid
您能告訴我從用戶那里獲取URL的最佳方法是什么,以及如何驗證它們嗎?
任何評論都非常感謝。
謝謝。
您需要在此處使用正則表達式來檢查有效的網址。
請嘗試這個:
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
$URL= 'http://example.com?id=32&name=kamalani';
if(preg_match($pattern, $URL) ){
echo "<br>valid";
} else{
echo "<br>invalid";
}
輸出量
valid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.