本文目錄一覽:
- 1、thinkphp驗證器正則常用規則
- 2、PHP 註冊表單的正則驗證
- 3、php表單驗證 正確才提交
- 4、php怎樣驗證表單文本區域內容是否已存在資料庫中?
- 5、php驗證碼怎麼在前from表單驗證呢?請大師請教,謝謝
thinkphp驗證器正則常用規則
ThinkPHP的自動驗證常用的正則
一般我們見的比較多的是設置規則為require、email之類的,其實這些本身也是屬於正則表達式驗證方式,只是系統內置定義了一些常用的正則表達式而已。這些內置的正則表達式的定義可以參考model類的regex方法,內置支持的正則定義包括:
require 欄位必須、email 郵箱、url URL地址、currency 貨幣、number 數字、zip 郵編、integer 整數、double 浮點數、english 英文字母,但是並不局限於這些正則規則的,我們完全可以直接在驗證規則裡面使用正則表達式進行定義,這樣我們可以憑藉強大的正則表達式來進行表單欄位驗 證,例如:
附上一些表單驗證中比較常用的正則表達式寫法:
匹配特定字元串:
限定符
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。
正則表達式的限定符有:
ThinkPHP的自動驗證機制是為了進行表單數據驗證,驗證可以支持function、 callback、confirm、equal、unique和regex,這裡要講的是使用正則表達式進行驗證。
特殊字元
許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元”轉義”,即,將反斜杠字元\ 放在它們前面。下表列出了正則表達式中的特殊字元:
正則表達式(regular expression)描述了一種字元串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
例如:
構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字元與運算符可以將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字元、字符集合、字元範圍、字元間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為”元字元”)組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
普通字元包括沒有顯式指定為元字元的所有可列印和不可列印字元。這包括所有大寫和小寫字母、所有數字、所有標點符號和一些其他符號。
非列印字元也可以是正則表達式的組成部分。下表列出了表示非列印字元的轉義序列:
所謂特殊字元,就是一些有特殊含義的字元,如上面說的 runoo*b 中的 ,簡單的說就是表示任何字元串的意思。如果要查找字元串中的 * 符號,則需要對 * 進行轉義,即在其前加一個 : runo*ob 匹配 runo ob。
許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元”轉義”,即,將反斜杠字元\ 放在它們前面。下表列出了正則表達式中的特殊字元:
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。
正則表達式的限定符有:
由於章節編號在大的輸入文檔中會很可能超過九,所以您需要一種方式來處理兩位或三位章節編號。限定符給您這種能力。下面的正則表達式匹配編號為任何位數的章節標題:
請注意,限定符出現在範圍表達式之後。因此,它應用於整個範圍表達式,在本例中,只指定從 0 到 9 的數字(包括 0 和 9)。
這裡不使用 + 限定符,因為在第二個位置或後面的位置不一定需要有一個數字。也不使用 ? 字元,因為使用 ? 會將章節編號限制到只有兩位數。您需要至少匹配 Chapter 和空格字元後面的一個數字。
如果您知道章節編號被限制為只有 99 章,可以使用下面的表達式來至少指定一位但至多兩位數字。
上面的表達式的缺點是,大於 99 的章節編號仍只匹配開頭兩位數字。另一個缺點是 Chapter 0 也將匹配。只匹配兩位數字的更好的表達式如下:
或
* 、+限定符都是貪婪的,因為它們會儘可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。
例如,您可能搜索 HTML 文檔,以查找括在 H1 標記內的章節標題。該文本在您的文檔中如下:
H1Chapter 1 – 介紹正則表達式/H1
貪婪: 下面的表達式匹配從開始小於符號 () 到關閉 H1 標記的大於符號 () 之間的所有內容。
非貪婪: 如果您只需要匹配開始和結束 H1 標籤,下面的非貪婪表達式只匹配 H1。
如果只想匹配開始的 H1 標籤,表達式則是:
通過在 *、+ 或 ? 限定符之後放置 ?,該表達式從”貪心”表達式轉換為”非貪心”表達式或者最小匹配。
定位符使您能夠將正則表達式固定到行首或行尾。它們還使您能夠創建這樣的正則表達式,這些正則表達式出現在一個單詞內、在一個單詞的開頭或者一個單詞的結尾。
正則表達式的定位符有:
PHP 註冊表單的正則驗證
我舉個例子撒
假如你表單是這麼寫
用戶名: input name=”username” value=”” / 注意name為 username
表單用POST方式提交 即form 的method 屬性為post
在PHP中這麼驗證,
假設我要這個用戶名只能是 10-32位 數字英文下劃線組合,且第一位必須字母
empty($_POST[‘username’]) $_POST[‘username’] = ”;
if(!preg_match(‘/^[a-zA-Z0-9\_]{10,32}$/’,$_POST[‘username’])) exit(‘用戶名不合法’);
if(!preg_match(‘/^[a-zA-Z]/’,$_POST[‘username’])) exit(‘第一位必須是字母’);
正則表達式就是 兩個/中間的部分了
^表示前面沒有任何字元了
$表示結尾沒有任何字元了
[a-zA-Z0-9\_]表示匹配規則集
每個字元都必須 是 小寫字母a-z 或 大寫字母A-Z 或 數字0-9 或者下劃線_ 其中\表示轉義符 用於轉義一些特殊字元
{16,32} 表示匹配次數為 16次到32次,少於16 或多於32 均為不合格,如果不限制長度 可以直接寫為 + 即 [a-zA-Z0-9]+ 或者指定一個長度 {10}
關於其他的表達式 百度搜索下就行了,都是通用的
例如
匹配手機號 /^1[0-9]{10}$/
php表單驗證 正確才提交
直接提交到b頁面在b頁面運行直接寫if()來驗證成功運行不成功直接exit()還有LZ請不要隨便罵人人家媽媽沒得罪你
記得採納啊
php怎樣驗證表單文本區域內容是否已存在資料庫中?
方法:查詢數據,若數據存在則輸出(前端這個要自己寫,我只寫了一個echo)
代碼如下:
//$conn = new mysqli($sql_server_name, $sql_username, $sql_password, $sql_db);
$timu = $_GET[“timu”];
$sql = $conn-query(“查詢 * from problems where timu
='”. $timu . “‘”); // 從problems庫里查 注意把「查詢」改成「select」,因為百度知道會屏蔽sql語句
if (mysqli_fetch_assoc($sql) 0) {
echo “已存在”;
} else {
echo “不存在”;
}
php驗證碼怎麼在前from表單驗證呢?請大師請教,謝謝
把驗證碼的值當作一個參數存在html表單/ajax表單中(如,以vcode命名增加一個hiden text);
在控制器接收表單的邏輯,接收$_POST[‘vcode’],判斷$_POST[‘vcode’]是不是生成的驗證碼,是,跳過,不是返回驗證碼錯誤到表單頁面;
其實驗證就類似介面一樣,雙方約定規則,統一密鑰,而驗證只是你自己去驗證罷了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159676.html