本文目錄一覽:
- 1、thinkphp驗證器正則常用規則
- 2、PHP判斷一個遠程url是否有效的幾種方法
- 3、php 怎麼驗證輸入的url合法性
- 4、PHP 正則驗證URL網址格式是否有效
- 5、php如何驗證網址是否正確
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判斷一個遠程url是否有效的幾種方法
需要判斷遠程URL是否有效,遠程url包括遠程圖片,網頁,視頻等等元素,收集了多種方法,大家可以根據需要選擇。
解決辦法:
使用PHP解決
使用file_get_contents函數,不過優缺點如果url無法訪問,會出現終止程序問題
使用curl返回,然後判斷是否正確執行
使用get_headers函數,根據HTTP返回值查看是否有200
使用js解決:
使用原生的js函數ActiveXObject,僅支持ie內核的瀏覽器
使用jq擴展
php 怎麼驗證輸入的url合法性
首先,定義函數check_url:
?php
function check_url($url){
if(!preg_match(‘/http:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=\+\%]*/is’,$url)){
return false;
}
return true;
}
?
使用方法:
?php
$url=’需驗證的url’;
$isurl=check_url($url);
if($isurl){
echo ‘url地址合法’;
}else{
echo ‘url地址非法’;
}
?
PHP 正則驗證URL網址格式是否有效
PHP使用ereg()正則表達式函數來驗證網址URL的格式是否符合規定,若網址有效則返回true,無效則返回false。本函數在PHP中屬常用函數。本函數執行返回布爾值。
PHP檢測網址是否效的
1 function CheckUrl($C_url){
2 if (!ereg(“^http://[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$”, $C_url))
3 {
4 return false;
5 }
6 return true;
7 }
php如何驗證網址是否正確
public function getUrlParams()
{
if ($this-_urlParams === null)
{
$pa = @parse_url($this-getUrl());
$pa[‘scheme’] = isset($pa[‘scheme’]) ? strtolower($pa[‘scheme’]) : ‘http’;
if ($pa[‘scheme’] !== ‘http’ $pa[‘scheme’] !== ‘https’)
{
trigger_error(“Invalid url scheme `{$pa[‘scheme’]}`”, E_USER_WARNING);
return false;
}
if (!isset($pa[‘host’]))
{
trigger_error(“Invalid request url, host required”, E_USER_WARNING);
return false;
}
if (!isset($pa[‘path’]))
$pa[‘path’] = ‘/’;
// basic auth
if (isset($pa[‘user’]) isset($pa[‘pass’]))
$this-applyBasicAuth($pa[‘user’], $pa[‘pass’]);
// convert host to IP address
$port = isset($pa[‘port’]) ? intval($pa[‘port’]) : ($pa[‘scheme’] === ‘https’ ? 443 : 80);
$pa[‘ip’] = $this-hasHeader(‘x-server-ip’) ?
$this-getHeader(‘x-server-ip’) : self::getIpAddr($pa[‘host’]);
$pa[‘conn’] = ($pa[‘scheme’] === ‘https’ ? ‘ssl’ : ‘tcp’) . ‘://’ . $pa[‘ip’] . ‘:’ . $port;
// host header
if (!$this-hasHeader(‘host’))
$this-setHeader(‘host’, strtolower($pa[‘host’]));
else
$pa[‘host’] = $this-getHeader(‘host’);
$this-_urlParams = $pa;
}
return $this-_urlParams;
}
public function getUrlParam($key)
{
$pa = $this-getUrlParams();
return isset($pa[$key]) ? $pa[$key] : null;
}
原創文章,作者:TAEG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144078.html