国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
PHP正則表達(dá)式入門教程(推薦),正則表達(dá)式入門教程
首頁(yè) 後端開(kāi)發(fā) php教程 PHP正則表達(dá)式入門教程(推薦),正則表達(dá)式入門教程_PHP教程

PHP正則表達(dá)式入門教程(推薦),正則表達(dá)式入門教程_PHP教程

Jul 12, 2016 am 08:52 AM
php 正規(guī)表示式

PHP正則表達(dá)式入門教程(推薦),正則表達(dá)式入門教程

思維導(dǎo)圖

點(diǎn)擊下圖,可以看具體內(nèi)容!

介紹

正則表達(dá)式,大家在開(kāi)發(fā)中應(yīng)該是經(jīng)常用到,現(xiàn)在很多開(kāi)發(fā)語(yǔ)言都有正則表達(dá)式的應(yīng)用,比如javascript,java,.net,php等等,我今天就把我對(duì)正則表達(dá)式的理解跟大家嘮嘮,不當(dāng)之處,請(qǐng)多多指教!

定位

我們什么時(shí)候使用正則表達(dá)式呢?不是所有的字符操作都用正則就好了,php在某些方面用正則反而影響效率。當(dāng)我們遇到復(fù)雜文本數(shù)據(jù)的解析時(shí)候,用正則是比較好的選擇。

優(yōu)點(diǎn)

正則表達(dá)式在處理復(fù)雜字符操作的時(shí)候,可以提高工作效率,也在一定程度節(jié)省你的代碼量。

缺點(diǎn)

我們?cè)谑褂谜齽t表達(dá)式的時(shí)候,復(fù)雜的正則表達(dá)式會(huì)加大代碼的復(fù)雜度,讓人很難理解。所以我們有的時(shí)候需要在正則表達(dá)式內(nèi)部添加注釋。

通用模式

¤ 定界符,通常使用 "/"做為定界符開(kāi)始和結(jié)束,也可以使用"#"。

  什么時(shí)候使用"#"呢?一般是在你的字符串中有很多"/"字符的時(shí)候,因?yàn)檎齽t的時(shí)候這種字符需要轉(zhuǎn)義,比如uri。

使用"/"定界符的代碼如下.

$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

preg_match中的$matches[0]將包含與整個(gè)模式匹配的字符串。

使用"#"定界符的代碼如下.這個(gè)時(shí)候?qū)?/"就不轉(zhuǎn)義!

$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

¤ 修飾符:用于改變正則表達(dá)式的行為。

我們看到的('/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html/i')中的最后一個(gè)"i"就是修飾符,表示忽略大小寫,還有一個(gè)我們經(jīng)常用到的是"x"表示忽略空格。

貢獻(xiàn)代碼:

$regex = '/HELLO/';
$str = 'hello word';
$matches = array();
if(preg_match($regex, $str, $matches)){
echo 'No i:Valid Successful!',"\n";
}
if(preg_match($regex.'i', $str, $matches)){
echo 'YES i:Valid Successful!',"\n";
}

¤ 字符域:[\w]用方括號(hào)擴(kuò)起來(lái)的部分就是字符域。

¤ 限定符:如[\w]{3,5}或者[\w]*或者[\w]+這些[\w]后面的符號(hào)都表示限定符?,F(xiàn)介紹具體意義。

{3,5}表示3到5個(gè)字符。{3,}超過(guò)3個(gè)字符,{,5}最多5個(gè),{3}三個(gè)字符。

* 表示0到多個(gè)

+ 表示1到多個(gè)。

¤ 脫字符號(hào)

^:

> 放在字符域(如:[^\w])中表示否定(不包括的意思)——“反向選擇”

> 放在表達(dá)式之前,表示以當(dāng)前這個(gè)字符開(kāi)始。(/^n/i,表示以n開(kāi)頭)。

注意,我們經(jīng)常管"\"叫"跳脫字符"。用于轉(zhuǎn)義一些特殊符號(hào),如".","/"

通配符(lookarounds):斷言某些字符串中某些字符的存在與否!

lookarounds分兩種:lookaheads(正向預(yù)查 ?=)和lookbehinds(反向預(yù)查?<=)。

> 格式:

正向預(yù)查:(?=) 相對(duì)應(yīng)的 (?!)表示否定意思

反向預(yù)查:(?<=) 相對(duì)應(yīng)的 (?

前后緊跟字符

$regex = '/(&#63;<=c)d(&#63;=e)/'; /* d 前面緊跟c, d 后面緊跟e*/
$str = 'abcdefgk';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

否定意義:

$regex = '/(&#63;<!c)d(&#63;!e)/'; /* d 前面不緊跟c, d 后面不緊跟e*/
$str = 'abcdefgk';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

>字符寬度:零

驗(yàn)證零字符代碼

$regex = '/HE(&#63;=L)LO/i';
$str = 'HELLO';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

打印不出結(jié)果!

$regex = '/HE(&#63;=L)LLO/i';
$str = 'HELLO';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

能打印出結(jié)果!

說(shuō)明:(?=L)意思是HE后面緊跟一個(gè)L字符。但是(?=L)本身不占字符,要與(L)區(qū)分,(L)本身占一個(gè)字符。

捕獲數(shù)據(jù)

沒(méi)有指明類型而進(jìn)行的分組,將會(huì)被獲取,供以后使用。

> 指明類型指的是通配符。所以只有圓括號(hào)起始位置沒(méi)有問(wèn)號(hào)的才能被捕捉。

> 在同一個(gè)表達(dá)式內(nèi)的引用叫做反向引用。

> 調(diào)用格式: \編號(hào)(如\1)。

$regex = '/^(Chuanshanjia)[\w\s!]+\1$/'; 
$str = 'Chuanshanjia thank Chuanshanjia';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

> 避免捕獲數(shù)據(jù)

格式:(?:pattern)

優(yōu)點(diǎn):將使有效反向引用數(shù)量保持在最小,代碼更加、清楚。

>命名捕獲組

格式:(?P<組名>) 調(diào)用方式 (?P=組名)

$regex = '/(&#63;P<author>chuanshanjia)[\s]Is[\s](&#63;P=author)/i';
$str = 'author:chuanshanjia Is chuanshanjia';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

運(yùn)行結(jié)果

惰性匹配(記?。簳?huì)進(jìn)行兩部操作,請(qǐng)看下面的原理部分)

  格式:限定符?

原理:"?":如果前面有限定符,會(huì)使用最小的數(shù)據(jù)。如“*”會(huì)取0個(gè),而“+”會(huì)取1個(gè),如過(guò)是{3,5}會(huì)取3個(gè)。

先看下面的兩個(gè)代碼:

代碼1.

<&#63;php
$regex = '/heL*/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

結(jié)果1.

代碼2

<&#63;php
$regex = '/heL*&#63;/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

結(jié)果2

代碼3,使用“+”

<&#63;php
$regex = '/heL+&#63;/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

結(jié)果3

代碼4,使用{3,5}

<&#63;php
$regex = '/heL{3,10}&#63;/i';
$str = 'heLLLLLLLLLLLLLLLL';
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

結(jié)果4

正則表達(dá)式的注釋

格式:(?# 注釋內(nèi)容)

用途:主要用于復(fù)雜的注釋

貢獻(xiàn)代碼:是一個(gè)用于連接MYSQL數(shù)據(jù)庫(kù)的正則表達(dá)式

$regex = '/
^host=(&#63;<!\.)([\d.]+)(&#63;!\.) (&#63;#主機(jī)地址)
\|
([\w!@#$%^&*()_+\-]+) (&#63;#用戶名)
\|
([\w!@#$%^&*()_+\-]+) (&#63;#密碼)
(&#63;!\|)$/ix';
$str = 'host=192.168.10.221|root|123456';
$matches = array();
if(preg_match($regex, $str, $matches)){
var_dump($matches);
}
echo "\n";

特殊字符

特殊字符 解釋
* 0到多次
+ 1到多次還可以寫成{1,}
? 0或1次
. 匹配除換行符外的所有單個(gè)的字符
\w [a-zA-Z0-9_]
\s 空白字符(空格,換行符,回車符)[\t\n\r]
\d [0-9]

以上所述是小編給大家介紹的PHP正則表達(dá)式入門教程的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)幫客之家網(wǎng)站的支持!

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127855.htmlTechArticlePHP正則表達(dá)式入門教程(推薦),正則表達(dá)式入門教程 思維導(dǎo)圖 點(diǎn)擊下圖,可以看具體內(nèi)容! 介紹 正則表達(dá)式,大家在開(kāi)發(fā)中應(yīng)該是經(jīng)常用...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? 我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什麼是PHP,為什麼它用於Web開(kāi)發(fā)? 什麼是PHP,為什麼它用於Web開(kāi)發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設(shè)置PHP時(shí)區(qū)? 如何設(shè)置PHP時(shí)區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

我如何驗(yàn)證PHP中的用戶輸入以確保其符合某些標(biāo)準(zhǔn)? 我如何驗(yàn)證PHP中的用戶輸入以確保其符合某些標(biāo)準(zhǔn)? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

什麼是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? 什麼是php(serialize(),Unserialize())中的數(shù)據(jù)序列化? Jun 22, 2025 am 01:03 AM

thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()

如何將PHP代碼嵌入HTML文件中? 如何將PHP代碼嵌入HTML文件中? Jun 22, 2025 am 01:00 AM

可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴(kuò)展名,以便服務(wù)器能正確解析。使用標(biāo)準(zhǔn)的標(biāo)籤包裹PHP代碼,可在HTML中任意位置插入動(dòng)態(tài)內(nèi)容。此外,可在同一文件中多次切換PHP與HTML,實(shí)現(xiàn)條件渲染等動(dòng)態(tài)功能。務(wù)必注意服務(wù)器配置及語(yǔ)法正確性,避免因短標(biāo)籤、引號(hào)錯(cuò)誤或遺漏結(jié)束標(biāo)籤導(dǎo)致問(wèn)題。

編寫清潔和可維護(hù)的PHP代碼的最佳實(shí)踐是什麼? 編寫清潔和可維護(hù)的PHP代碼的最佳實(shí)踐是什麼? Jun 24, 2025 am 12:53 AM

寫乾淨(jìng)、易維護(hù)的PHP代碼關(guān)鍵在於清晰命名、遵循標(biāo)準(zhǔn)、合理結(jié)構(gòu)、善用註釋和可測(cè)試性。 1.使用明確的變量、函數(shù)和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標(biāo)準(zhǔn)統(tǒng)一代碼風(fēng)格;3.按職責(zé)拆分代碼結(jié)構(gòu),使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責(zé)的小函數(shù);5.在關(guān)鍵處添加註釋並撰寫接口文檔,明確參數(shù)、返回值和異常;6.提高可測(cè)試性,採(cǎi)用依賴注入、減少全局狀態(tài)和靜態(tài)方法。這些做法提升代碼質(zhì)量、協(xié)作效率和後期維護(hù)便利性。

如何使用PHP執(zhí)行SQL查詢? 如何使用PHP執(zhí)行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

See all articles