版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
字符串函數(shù)第六章目錄01字符串的定義方法02字符串處理函數(shù)03什么是正則表達(dá)式05正則表達(dá)式語法04正則表達(dá)式的組成06PCRE兼容正則表達(dá)式函數(shù)01字符串的定義方法
使用單引號或雙引號定義字符串
使用定界符定義字符串
010201字符串的定義方法<?php$str1="ILikePHP"; $str2='ILikePHP';echo$str1; echo$str2; ?>定義字符串在字符串中使用變量<?php$test="PHP";$str="ILike$test";$str1='ILike$test';echo$str;echo$str1; ?>01字符串的定義方法使用定界符定義字符串<?php$str=“再過一天";echo<<<strmark<fontcolor=“#FF0099”>$str就是周末了!</font>strmark;?><<<str
格式化文本str格式02字符串處理函數(shù)(1)strlen()函數(shù)strlen()函數(shù)用于獲取字符串的長度。示例:strlen()函數(shù)的返回值類型是int整型。漢字占2個字符數(shù)字、英文、小數(shù)點、下劃線和空格各占1個字符。echostrlen('abc'); //輸出結(jié)果:3echostrlen(‘計算機網(wǎng)絡(luò)'); //輸出結(jié)果:10echostrlen('PHP'); //輸出結(jié)果:502字符串處理函數(shù)(2)strrpos()函數(shù)strrpos()函數(shù)用于獲取指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置,其中,目標(biāo)字符串中第1個字符的位置從0開始。示例:strrpos()函數(shù)的返回值類型是int整型,但當(dāng)找不到指定字符串時,返回值為布爾型false。第一個參數(shù)是目標(biāo)字符串。第二個參數(shù)是指定字符串。echostrrpos('itcast','a');//輸出結(jié)果:3echostrrpos('itcast','c',1);//輸出結(jié)果:2echostrrpos('itcast','t',-4);//輸出結(jié)果:102字符串處理函數(shù)(2)strrpos()函數(shù)第三個參數(shù)是字符串開始查找的位置,它有三種情況,具體如下:省略第三個參數(shù)時,表示從目標(biāo)字符串的第0個位置開始向后查找指定字符串。第三個參數(shù)為正數(shù)n時,表示從目標(biāo)字符串的第n個位置開始向后查找指定字符串。第三個參數(shù)為負(fù)數(shù)m時,表示從目標(biāo)字符串的尾部第m個位置開始向前查找指定字符串。02字符串處理函數(shù)(3)substr()函數(shù)substr()函數(shù)用于獲取字符串中的子串。示例:substr()函數(shù)的返回值類型是字符串型。substr()函數(shù)的第一個參數(shù)表示待處理的字符串。substr()函數(shù)的第二個參數(shù)表示字符串開始截取的位置,當(dāng)它為負(fù)數(shù)m時,表示從待處理字符的結(jié)尾處向前數(shù)第m個字符開始。echosubstr('itcast',2); //輸出結(jié)果:castechosubstr('itcast',0,2); //輸出結(jié)果:itechosubstr('itcast',3,-1); //輸出結(jié)果:asechosubstr('itcast',-4,-1); //輸出結(jié)果:cas02字符串處理函數(shù)(3)substr()函數(shù)substr()函數(shù)的第三個參數(shù)表示截取字符串的長度,當(dāng)其省略時,表示截取到字符串的結(jié)尾,當(dāng)其為負(fù)數(shù)m時,表示從截取后的字符串的末尾處去掉m個字符。02字符串處理函數(shù)(4)str_replace()函數(shù)str_replace()函數(shù)用于字符串中的某些字符進(jìn)行替換操作。示例:str_replace()函數(shù)的第一個參數(shù)表示目標(biāo)字符串。str_replace()函數(shù)的第二參數(shù)表示替換字符串。str_replace()函數(shù)的第三個參數(shù)表示執(zhí)行替換的字符串。str_replace()函數(shù)的第四個參數(shù)是一個可選的參數(shù),用于保存字符串被替換的次數(shù)。echostr_replace('e','E','welcome',$count);//輸出結(jié)果:wElcomEecho$count; //輸出結(jié)果:202字符串處理函數(shù)(5)explode()函數(shù)explode()函數(shù)可以使用一個字符串分割另一個字符串。示例://①輸出結(jié)果:array(3){[0]=>string(2)"ba"[1]=>string(1)"a"[2]=>string(1)"a"}var_dump(explode('n','banana'));//②輸出結(jié)果:array(2){[0]=>string(2)"ba"[1]=>string(3)"ana"}var_dump(explode('n','banana',2));//③輸出結(jié)果:array(1){[0]=>string(2)"ba"}var_dump(explode('n','banana',-2));//④輸出結(jié)果:array(1){[0]=>string(6)"banana"}var_dump(explode('n','banana',0));//⑤輸出結(jié)果:array(1){[0]=>string(6)"itcast"}var_dump(explode('p','itcast'));//⑥輸出結(jié)果:bool(false)var_dump(explode('','itcast'));02字符串處理函數(shù)(6)implode()函數(shù)implode()函數(shù)用于指定的連接符將數(shù)組拼接成一個字符串。03什么是正則表達(dá)式正則表達(dá)式是一種描述字符串結(jié)構(gòu)的語法規(guī)則,是一種特定的格式化模式,用于驗證各種字符串是否匹配(Match)這個特征,進(jìn)而實現(xiàn)高級的文本查找、替換、截取等操作。正則表達(dá)式在發(fā)展過程中出現(xiàn)了多種形式,一種是POSIX規(guī)范兼容的表達(dá)式,另一種是當(dāng)Perl(一種功能豐富的編程語言)發(fā)展起來后,衍生出來的PCRE(Perl兼容正則表達(dá)式)庫,使得許多開發(fā)人員將PCRE整合到自己的語言中,PHP中也未PCRE庫的使用提供了相應(yīng)的函數(shù)。03什么是正則表達(dá)式郵件的格式:tenssun@163.com其中tenssun是用戶名,163.com是服務(wù)器名用戶名只能由英文字母a~z(不區(qū)分大小寫)、數(shù)字0~9、下劃線組成。用戶名的起始字符必須是英文字母.如:netease_2005用戶名長度為5~20個字符。服務(wù)器名只能由英文字母a~z(不區(qū)分大小寫)、數(shù)字0~9、下劃線及點組成,@后點前面長度限制為1-10個字符,點后面的限制為com,cn,,net。03什么是正則表達(dá)式先寫用戶名的正則表達(dá)式^[a-zA-Z][0-9a-zA-Z_]{4,19}再寫主機名的正則表達(dá)式[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$再把前后拼起來則為:^[a-zA-Z][0-9a-zA-Z_]{4,19}@[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$03什么是正則表達(dá)式<?php$email='wjj7r8y6@';
if(preg_match("^[a-zA-Z][0-9a-zA-Z_]{4,19}@[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$",$email)){echo'email格式正確';}?>04正則表達(dá)式的組成在PHP中,一個完整的正則表達(dá)式是由4部分內(nèi)容組成的,分別為定界符、元字符、文本字符和模式修飾符。其中,定界符一般為“//”,并且定界符可以自己設(shè)置,只要保持前后一致即可;元字符是具有特定含義的字符;文本字符就是普通的文本,如字母和數(shù)字等。模式修飾符用于指定正則表達(dá)式以何種形式進(jìn)行匹配,如i表示忽略大小寫,x表示忽略空白字符等。注意:在編寫正則表達(dá)式時,元字符和文本字符在定界符內(nèi),模式修飾符標(biāo)記在結(jié)尾定界符之外。05正則表達(dá)式語法一、定位符和選擇符1.定位符在程序開發(fā)中,經(jīng)常需要確定字符在字符串中的具體位置。例如,匹配字符串的頭部或尾部。^和$他們是分別用來匹配字符串的開始和結(jié)束。05正則表達(dá)式語法下面法舉例說明"^The":開頭一定要有"The"字符串;"ofdespair$":結(jié)尾一定要有"ofdespair"的字符串;那么,"^abc$":就是要求以abc開頭和以abc結(jié)尾的字符串,實際上是只有abc匹配"notice":匹配包含notice的字符串你可以看見如果你沒有用我們提到的兩個字符(最后一個例子),就是說模式(正則表達(dá)式)可以出現(xiàn)在被檢驗字符串的任何地方,你沒有把他鎖定到兩邊(開始或結(jié)束)05正則表達(dá)式語法例:$subject=“It’sanicedaytoday”;//匹配字符串開始的位置preg_match(‘/^It/’,$subject,$matches);print_r($matches);//匹配字符串結(jié)束的位置preg_match(‘/today$/’,$subject,$matches);print_r($matches);05正則表達(dá)式語法2.選擇符若要查找的條件有多個,只要其中一個滿足即可成立時,可以使用選擇符“|”。該字符可以理解為“或”。具體示例如下:"hi│hello":匹配含有"hi"或者"hello"的字符串;"(b│cd)ef":匹配含有"bef"或者"cdef"的字符串;"(a│b)*c":匹配含有這樣多個(包括0個)a或b,后面跟一個c的字符串;05正則表達(dá)式語法例:<?phppreg_match_all(‘/34|56|78/’,’123456’,$matches);print_r($matches);?>05正則表達(dá)式語法二、字符范圍與反斜線1.字符范圍在正則表達(dá)式中,對于匹配某個范圍內(nèi)的字符,可以用中括號“[]”和連字符“-”來實現(xiàn)。且在中括號中還可以用反義字符“^”,表示匹配不在指定字符范圍內(nèi)的字符。05正則表達(dá)式語法示例說明匹配結(jié)果[abc]匹配字符a、b、c[^abc]匹配除a、b、c以外的字符[A-Z]匹配字母A-Z范圍內(nèi)的字符[^a-z]匹配字母a-z范圍外的字符[a-zA-Z0-9]匹配大寫字母、小寫字母和數(shù)字0-9范圍內(nèi)的字符注意:字符“-”在通常情況下只表示一個普通字符,只有在表示字符范圍時才作為元字符來使用?!?”連字符表示的范圍遵循字符編碼的順序,如“a-Z”“z-a”“a-9”都是不合法的范圍。05正則表達(dá)式語法1.反斜線在正則表達(dá)式中,“\”除了可作為轉(zhuǎn)義字符外,還具有其他功能。字符說明\d任意一個十進(jìn)制數(shù)字,相當(dāng)于[0-9]\D任意一個非十進(jìn)制數(shù)字\w任意一個單詞字符,相當(dāng)于[a-zA-Z0-9]\W任意一個非單詞字符\s任意一個空白字符(如空格、水平制表符等)\S任意一個非空白字符\b單詞分界符,如“\bgra”可以匹配”bestgrade”的結(jié)果為”gra”\B非單詞分界符。如“\Bade”可以匹配”bestgrade”的結(jié)果為”ade”\xhh表示hh(十六進(jìn)制2位數(shù)字)對應(yīng)的ASCII字符,如“\x6”表示“a”05正則表達(dá)式語法三、字符的限定和分組1.點字符和限定符點字符“.”用于匹配一個任意字符,限定符(?、+、*、{})用于匹配某個字符連續(xù)出現(xiàn)的次數(shù)。05正則表達(dá)式語法字符說明示例結(jié)果.匹配一個任意字符p.P?匹配前面的字符零次或一次hone?y+匹配前面的字符一次或多次co+me*匹配前面的字符零次或多次co*me{n}匹配前面的字符n次ne{2}d{n,}匹配前面的字符最少n次ne{2,}d{n,m}匹配前面的字符最少n次,最多m次lug{0,2}05正則表達(dá)式語法例:如何使用正則完成一個11位數(shù)字組成的手機號的驗證。要求手機號以1開頭,第2位數(shù)字是3、4、5、7、8中的一個,勝于的數(shù)字可以是0-9之間的任意數(shù)字。05正則表達(dá)式語法2.貪婪與懶惰匹配當(dāng)點字符和限定字符連用時,可以實現(xiàn)匹配指定數(shù)量范圍的任意字符。例如,“^pre.*end$”可以匹配以pre開始到end結(jié)束,中間包含零個或多個任意字符的字符串。正則表達(dá)式在實現(xiàn)指定數(shù)量范圍的任意字符匹配時,支持貪婪匹配和惰性匹配兩種方式。所謂貪婪表示匹配盡可能多的字符,二惰性表示匹配盡可能少的字符。在默認(rèn)情況下是貪婪匹配,若想要實現(xiàn)惰性匹配,需在上一個限定符的后面加上“?”符號。05正則表達(dá)式語法例://貪婪匹配preg_match(‘/p.*h/’,’phphphph’,$matches);print_r($matches);//懶惰匹配preg_match(‘/p.*?h/’,’phphphph’,$matches);print_r($matches);從上面示例可以看出,貪婪匹配時,會獲取最先出現(xiàn)的p到最后出現(xiàn)的h,即可獲得匹配結(jié)果為“phphphph”;懶惰匹配時,會獲取最先出現(xiàn)的p到最先出現(xiàn)的h,即可獲取匹配結(jié)果“ph”。05正則表達(dá)式語法3.括號字符在正則表達(dá)式中,括號字符“()”有兩個作用:一是改變限定符的作用范圍;二是分組。(1)改變限定符的作用范圍①改變作用范圍前正則表達(dá)式:firm|sh可匹配的結(jié)果:firm、sh②改變作用范圍后正則表達(dá)式:fi(rm|sh)可匹配的結(jié)果:firm、fish05正則表達(dá)式語法(2)分組①分組前正則表達(dá)式:bana{2}可匹配的結(jié)果:banaa②分組后正則表達(dá)式:ba(na){2}可匹配的結(jié)果:banana05正則表達(dá)式語法例:以常見的“年-月-日”形式的日期格式匹配為例。其中,年份可以從1000到9999,月份從1到12,天數(shù)從1到31。不考慮復(fù)雜的同月份天數(shù)不同的問題。05正則表達(dá)式語法注:在正則表達(dá)式中還支持反向引用,如“\1”表示引用第1個小括號的匹配結(jié)果。反向引用,就是依靠子表達(dá)式的”記憶”功能,匹配連續(xù)出現(xiàn)的字串或是字符。如(dqs)(pps)\1\2,表示匹配字符串dqsppsdqspps。05正則表達(dá)式語法4.模式修飾符在PHP正則表達(dá)式的定界符外,還可以使用模式修飾符,用于進(jìn)一步對正則表達(dá)式進(jìn)行設(shè)置。模式符說明示例可匹配結(jié)果i模式中的字符將同時匹配大小寫字母/con/iCon、con、cOn等m目標(biāo)字符串視為多行/P.*/mPHP\nPCs將字符串視為單行,換行符作為普通字符/Hi.*my/sHi\nmyx將模式中的空白忽略/need/xneedA強制僅從目標(biāo)字符串的開頭開始匹配/good/A相當(dāng)于/^good/D模式中$元字符僅匹配目標(biāo)字符串的結(jié)尾/it$/D忽略最后的換行U匹配最近的字符串/<.+>/U匹配最近一個字符串05正則表達(dá)式語法在實際運行中,各種運算符會遵循優(yōu)先級順序,PHP中常用的正則表達(dá)式運算符優(yōu)先級由高到低的順序如下表所示。運算符說明\轉(zhuǎn)義符()、(?:)、(?=)、[]括號和中括號*、+、?、{n}、{n,}、{n,m}限定符^、$、\任何元字符、任何字符定位點和序列|替換06PCRE兼容正則表達(dá)式函數(shù)1.preg_match()函數(shù)功能:進(jìn)行正則表達(dá)式匹配語法:intpreg_match(stringpattern,stringsubject[,arraymatches[,intflags]])其中:第一個參數(shù)是正則表達(dá)式,第二個參數(shù)是被搜索的字符串,即在subject字符串中搜索與pattern給出的正則表達(dá)式相匹配的內(nèi)容。06PCRE兼容正則表達(dá)式函數(shù)第3個參數(shù)用于以數(shù)組形式保存匹配到的結(jié)果。$matches[0]將包含與整個模式匹配的文本,$matches[1]將包含與第一個捕獲的括號中的子模式所匹配的文本,以此類推。注意:preg_match()函數(shù)在正則匹配時,只要匹配到符合的內(nèi)容,就會停止繼續(xù)匹配。所以匹配結(jié)果要么是0次(沒有匹配),要么是1次。第4個參數(shù)可以設(shè)置為“PREG_OFFSET_CAPTURE”,表示將第一次匹配到指定規(guī)則的內(nèi)容所在位置的偏移量添加到$matches中,待查字符的開始位置從0開始計算。例如,字符串”abdbc”中的“a”的偏移量是0,“c”的偏移量是4。06PCRE兼容正則表達(dá)式函數(shù)2.preg_match_all()函數(shù)功能:與preg_match()函數(shù)的功能類似,區(qū)別在于preg_match()在第一次匹配成功后就停止查找,preg_match_all()函數(shù)會一直匹配到最后才停止,獲取到所有相匹配的結(jié)果。語法:intpreg_match_all(stringpattern,stringsubject,arraymatches[,intflags])06PCRE兼容正則表達(dá)式函數(shù)3.preg_grep()函數(shù)功能:對于數(shù)組中的元素正則匹配,經(jīng)常使用preg_grep()函數(shù)語法:arraypreg_grep(stringpattern,arrayinput)其中:第1個參數(shù)表示正則表達(dá)式模式,第2個參數(shù)表示待匹配的數(shù)組。在默認(rèn)情況下,該函數(shù)的返回值是符合正則規(guī)則的數(shù)組,同時保留原數(shù)組中的鍵值關(guān)系。除此之外,該函數(shù)還可以將第3個參數(shù)設(shè)置為PREG_GREP_INVERT,獲取不符合正則規(guī)則的數(shù)組。06PCRE兼容正則表達(dá)式函數(shù)例:<?php$arr=array('TomLucy','PHP','pigcat','C');$matches=preg_grep('/^[a-zA-Z]*$/',$arr);print_r($matches);?>06PCRE兼容正則表達(dá)式函數(shù)4.preg_replace()函數(shù)功能:通過正則表達(dá)式完成字符串的搜索和替換語法:mixedpreg_replace(mixedpattern,mixedreplacement,mixedsubject[,intlimit])preg_replace()函數(shù)首先會搜索第3個參數(shù)中符合第1個參數(shù)正則規(guī)則的內(nèi)容,然后使用第2個參數(shù)進(jìn)行替換。其中,第3個參數(shù)的數(shù)據(jù)類型決定著返回值的類型。06PCRE兼容正則表達(dá)式函數(shù)例1將字符串”hello,中國”中的hello替換為′你好pattern=′/hello/′;str=preg_replace(pattern,′你好′,str);例2去除字符串”gawwenngeeojjgegop”中連續(xù)相同的字母$str='gawwenngeeojjgegop';$pattern='/(.)\1/';$str=preg_replace($pattern,'',$str);06PCRE兼容正則表達(dá)式函數(shù)另外,正則的匹配規(guī)則和替換的內(nèi)容都可以是數(shù)組類型。例:<?php$str='Thequickbrownfoxjumpsoverthelazydog.';$pattern=array('/quick/','/brown/','/fox/');$replace=array('slow','black','bear');echopreg_replace($pattern,$replace,$str);?>注意:正則匹配規(guī)則和替換內(nèi)容是數(shù)組時,其替換的順序僅與數(shù)組定義時編寫的順序有關(guān),與數(shù)組的鍵名無關(guān)。06PCRE兼容正則表達(dá)式函數(shù)在使用preg_replace()函數(shù)實現(xiàn)正則匹配內(nèi)容替換時,默認(rèn)允許替換次數(shù)是所有符合規(guī)則的內(nèi)容,其值是-1,表示無限次。另外,還可以根據(jù)實際情況設(shè)置允許替換的次數(shù)。例:<?php$str='abcd,dcba';$pattern='/b/';$replace='e';echopreg_replace($pattern,$replace,$str,1);?>06PCRE兼容正則表達(dá)式函數(shù)當(dāng)需要替換的內(nèi)容很多時,若需要了解preg_replace()函數(shù)具體完成了幾次指定規(guī)則的替換,可以按照如下的方式實現(xiàn)。<?php$str='abcd,dcba';$pattern='/b/';$replace='e';echopreg_replace($pattern,$replace,$str,-1,$cou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)療產(chǎn)業(yè)鏈優(yōu)化合同
- 2025年隨州市中心醫(yī)院衛(wèi)生專業(yè)技術(shù)人員專項招聘21人備考題庫附答案詳解
- 2025年銅陵市財經(jīng)學(xué)校招聘11-18人備考題庫含答案詳解
- 2025年濉溪縣龍華高級中學(xué)教師招聘備考題庫及答案詳解一套
- 2025年南京大學(xué)法學(xué)院特任助理研究員招聘備考題庫完整答案詳解
- 2025年哈爾濱市平房區(qū)平房鎮(zhèn)衛(wèi)生院招聘醫(yī)療技術(shù)、收款工作人員的備考題庫完整答案詳解
- 珠海高新區(qū)2025年下半年公開招聘公辦中學(xué)事業(yè)編制教師備考題庫及參考答案詳解一套
- 貴州城市職業(yè)技工學(xué)校2025年招聘備考題庫及1套參考答案詳解
- 2025年柳鋼集團(tuán)社會招聘備考題庫及一套完整答案詳解
- 學(xué)生貸款應(yīng)急預(yù)案(3篇)
- 唯物主義和經(jīng)驗批判主義講義
- 鋰電池綜合回收項目環(huán)評報告書
- GB/T 26121-2010可曲撓橡膠接頭
- GB/T 15256-2014硫化橡膠或熱塑性橡膠低溫脆性的測定(多試樣法)
- 湖南省對口招生考試醫(yī)衛(wèi)專業(yè)試題(2010-2014年)
- 陳染 個人與女性的書寫課件
- 2022年廣西自然資源職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘考試筆試試題及答案解析
- 行政倫理學(xué)(全套課件)
- 2022年自然保護(hù)地大數(shù)據(jù)數(shù)字化管理平臺建設(shè)方案
- DB13T 5388-2021 大中型水庫管理規(guī)程
- 婦產(chǎn)科臨床路徑工作總結(jié)
評論
0/150
提交評論