2017-06-09 22 views
-3

HTML的地址欄:如何在沒有正則表達式的情況下限制PHP中地址字段的特殊字符?

<p> <label for="username">Address:</label> 
    <input type=text name="address" placeholder="Enter your address"> 
    </p>   

我要檢查通過對下面在這些條件下用戶輸入的地址:

  1. 只有字母,數字,散,逗號,圓形支架,正斜槓,點和連字符是允許的。
  2. 開始和結束不應該是特殊字符。
  3. 連續兩個特殊字符是不允許的。

回答

1

我想你是在尋找html5輸入域限制器。但存在一個唯一的電子郵件地址或URL地址,而不是常規的物理地址

https://www.w3schools.com/html/html_form_input_types.asp

<form> 
    E-mail: 
    <input type="email" name="email"> 
</form> 

<form> 
    Add your homepage: 
    <input type="url" name="homepage"> 
</form> 

基於更新的限制。 1)只有字母,數字,散,逗號, 圓形支架,正斜槓,網點和:這是最好的正則表達式

我要檢查通過對下面給出這些 條件下用戶輸入的地址進行連字符是允許的。 2) 開始和結束不應該是特殊字符。 3)兩個 連續的特殊字符是不允許的。

這是正則表達式,你需要

/^([a-zA-Z0-9 ]|[a-zA-Z0-9 ][-#,()\/.])*[a-zA-Z0-9 ]$/gm 

https://regex101.com/r/irDQ1S/1

0

考慮使用filter_var()

http://php.net/manual/en/function.filter-var.php

function addressFilter($address) 
{ 
    $invalidChars = ['%', '&']; // Array of invalid characters 

    foreach ($invalidChars as $invalidChar) { 
     if (strpos($address, $invalidChar) !== false) { 
      return false; 
     } 
    } 

    return $address; 
} 

$address = filter_var($_POST['address'], FILTER_CALLBACK, ['options' => 'addressFilter']);