簡體   English   中英

驗證URL的最佳做法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM