2016-11-10 75 views
0

我想驗證一個URL,當我通過一個窗體發送,我想確保它以https或http開頭,至少有一個時期,然後沒有最後一段時間或尾隨的斜線。我已經通過使用正則表達式實現了http和句點,但是我似乎無法解決如何修剪url。 ,./,/。或/我使用rtrim,但它只適用於如果它發現單個字符,有沒有辦法刪除它們,如果出現?修剪網址的斜槓和期間

這裏是我的代碼:

//update the canonical url 
     $canonical_url = $_POST ['canonical_url']; 
     $valid_url = preg_match('/^(http[s]?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/', $canonical_url); 
     if ($valid_url) { 
      $removed_period = rtrim($canonical_url, '.'); 
      $final_canonical = rtrim($removed_period, '/'); 
     } 
+0

可以str_replace函數用戶更換。和/''@pocockn –

回答

1

你可以使用filter_var來驗證您的網址和preg_replace修剪後..//./,如果有的話。

$canonical_url = $_POST['canonical_url']; 
if (filter_var($canonical_url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) { 
    $final_canonical = preg_replace('/(\.|\.\/|\/\.|\/)$/', '', $canonical_url); 
} 

注意FILTER_VALIDATE_URL允許任何RFC 2396標準的URI,所以如果你只承認HTTP/HTTPS,您可以添加:

if(filter_var(…) && strpos($canonical_url, 'http') !== false) {…}