版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基礎(chǔ)篇在Web編程中,經(jīng)常需要對(duì)字符串進(jìn)行處理和分析。正確使用和掌握字符串相關(guān)操作,能在開(kāi)發(fā)過(guò)程中節(jié)約大量時(shí)間,有效提高開(kāi)發(fā)效率。正則表達(dá)式是一種對(duì)字符串進(jìn)行模式匹配和替換的規(guī)則,在字符串處理中起著非常重要的作用。本章便來(lái)學(xué)習(xí)字符串操作和正則表達(dá)式的相關(guān)知識(shí)。2學(xué)習(xí)目標(biāo)5.1認(rèn)識(shí)字符串5.2字符串常用操作5.3正則表達(dá)式本章實(shí)訓(xùn)本章總結(jié)3
了解字符串的組成和表示形式
掌握字符串常用操作
了解正則表達(dá)式的作用和語(yǔ)法規(guī)則
掌握Perl兼容正則表達(dá)式函數(shù)的應(yīng)用4學(xué)習(xí)目標(biāo)5.1認(rèn)識(shí)字符串5.2字符串常用操作5.3正則表達(dá)式本章實(shí)訓(xùn)本章總結(jié)55.1認(rèn)識(shí)字符串前面在2.2節(jié)介紹數(shù)據(jù)類型時(shí),曾簡(jiǎn)單介紹過(guò)字符串,此處將詳細(xì)介紹字符串的相關(guān)操作。65.1認(rèn)識(shí)字符串字符串簡(jiǎn)介字符串表示形式77定義和調(diào)用函數(shù)字符串是由數(shù)字、字母、下劃線等組成的一串字符。此處所說(shuō)的字符主要包括以下幾種類型:
數(shù)字字符,如1,2,3等。字母字符,如a,b,c等。特殊字符,如$,#,!,@等。轉(zhuǎn)義字符,如\n(換行符)、\r(回車符)、\t(Tab字符)等。其中轉(zhuǎn)義字符在輸出時(shí)不顯示,只能看到其所產(chǎn)生的格式化效果。8定義和調(diào)用函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\01)【例5-1】格式化輸出字符串。實(shí)例代碼如下:<?phpecho"ThisisaCharacterstring:\rabc_@123";?>9定義和調(diào)用函數(shù)運(yùn)行結(jié)果如圖5-1所示。本實(shí)例的換行效果在瀏覽器中不可見(jiàn),需要查看源文件來(lái)查看轉(zhuǎn)義字符的輸出結(jié)果。在瀏覽界面單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“查看源”示。圖5-1格式化輸出字符串,格式如圖5-2所圖5-2查看源文件10字符串表示形式通過(guò)前面2.2.1節(jié)的介紹,我們知道,字符串可以使用)、雙引號(hào)(”)和定界符3種形式來(lái)表示:?jiǎn)我?hào)(’(<<<)。此處要強(qiáng)調(diào)的一點(diǎn)是:在使用過(guò)程中一定要注意單引號(hào)與雙引號(hào)的差異,任何變量在雙引號(hào)中都會(huì)被轉(zhuǎn)換為它的值進(jìn)行輸出顯示;而單引號(hào)的內(nèi)容則會(huì)被原樣輸出。具體可以參考【例2-3】的輸出結(jié)果。11學(xué)習(xí)目標(biāo)5.1認(rèn)識(shí)字符串5.2字符串常用操作5.3正則表達(dá)式本章實(shí)訓(xùn)本章總結(jié)125.2字符串常用操作135.2字符串常用操作獲取字符串長(zhǎng)度去除字符串的首尾空格和特殊字符大小寫(xiě)轉(zhuǎn)換截取字符串查找字符串替換字符串1414獲取字符串長(zhǎng)度PHP中使用strlen()函數(shù)獲取字符串長(zhǎng)度,其語(yǔ)法格式如下:intstrlen(string$str)(實(shí)例位置:素材與實(shí)例\example\ph05\02)【例5-2】獲取字符串長(zhǎng)度。實(shí)例代碼如下:<?phpechostrlen("ThisisaCharacterstring:\rabc_@123");?>15獲取字符串長(zhǎng)度運(yùn)行結(jié)果如圖5-3所示。圖5-3獲取字符串長(zhǎng)度16獲取字符串長(zhǎng)度知識(shí)庫(kù)漢字占兩個(gè)字符,數(shù)字、英文、小數(shù)點(diǎn)、下劃線和空格各占一個(gè)字符。實(shí)際的網(wǎng)頁(yè)制作中,常用strlen()函數(shù)獲取并檢測(cè)字符串長(zhǎng)度。比如在用戶注冊(cè)時(shí),可以用其檢測(cè)用戶輸入密碼的長(zhǎng)度,如果長(zhǎng)度小于6,則彈出提示信息,要求重新輸入。17去除字符串的首尾空格和特殊字符用戶在瀏覽器中輸入數(shù)據(jù)時(shí),往往會(huì)在無(wú)意中輸入多余的空格,而在某些情況下,字符串中又不允許出現(xiàn)空格和特殊字符,此時(shí)就需要去除這些多余的空格和特殊字符。為此PHP提供了trim()、rtrim()和ltrim()函數(shù),分別用于去除字符串兩端空格、字符串尾部空格和字符串首部空格。18去除字符串的首尾空格和特殊字符1去除字符串首尾空格——trim()函數(shù)trim()函數(shù)用于去除字符串首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串。其語(yǔ)法格式如下:stringtrim(string$str[,string$charlist="\t\n\r\0\x0B"]);其中的參數(shù)str是要去掉空格的字符串;可選參數(shù)charlist為準(zhǔn)備從字符串str中移除的字符,如果不設(shè)置該參數(shù),則默認(rèn)去除以下字符。
“”:空格(ASCII32(0×20))?!癨t”:tab,制表符(ASCII9(0×09))?!癨n”:換行符(ASCII10(0×0A))?!癨0”:空字符(ASCII0(0×00))?!癨r”:回車符(ASCII13(0×0D))?!癨x0B”:垂直制表符(ASCII11(0×0B))。19去除字符串的首尾空格和特殊字符2去除字符串右邊空格——rtrim()函數(shù)rtrim()函數(shù)用于去除字符串右邊的空格和特殊字符。其語(yǔ)法格式如下:stringtrim(string$str[,string$charlist="\t\n\r\0\x0B"]);3去除字符串左邊空格——ltrim()函數(shù)ltrim()函數(shù)用于去除字符串左邊的空格和特殊字符。其語(yǔ)法格式如下:stringltrim(string$str[,string$charlist]);20去除字符串的首尾空格和特殊字符(實(shí)例位置:素材與實(shí)例\example\ph05\03)【例5-3】去除字符串空格。實(shí)例代碼如下:<?php$str="Helloecho$str."<br>";echotrim($str,"Hed!")."<br>";echortrim($str,"ld!")."<br>";echoltrim($str,"He")."<br>";?>World!";21去除字符串的首尾空格和特殊字符運(yùn)行結(jié)果如圖5-4所示。圖5-4去除字符串空格22大小寫(xiě)轉(zhuǎn)換在字符串操作過(guò)程中,通常需要對(duì)其大小寫(xiě)進(jìn)行轉(zhuǎn)換,此時(shí)可以使用大小寫(xiě)轉(zhuǎn)換函數(shù)。常見(jiàn)大小寫(xiě)轉(zhuǎn)換函數(shù)及其語(yǔ)法格式如下:stringstrtolower(stringstr);stringstrtoupper(stringstr);stringucfirst(stringstr);stringucwords(stringstr);//轉(zhuǎn)換為小寫(xiě)//轉(zhuǎn)換為大寫(xiě)//整個(gè)字符串首字母大寫(xiě)//整個(gè)字符串中以空格為分隔符的單詞首字母大寫(xiě)23大小寫(xiě)轉(zhuǎn)換(實(shí)例位置:素材與實(shí)例\example\ph05\04)【例5-4】大小寫(xiě)轉(zhuǎn)換。實(shí)例代碼如下:<?php$str="IwantToFLY";echostrtolower($str)."<br>";echostrtoupper($str)."<br>";echoucfirst($str)."<br>";echoucwords($str)."<br>";//定義字符串類型的變量//輸出轉(zhuǎn)換為小寫(xiě)的字符串//輸出轉(zhuǎn)換為大寫(xiě)的字符串//輸出轉(zhuǎn)換為首字母大寫(xiě)的字符串//輸出轉(zhuǎn)換為單詞首字母//大寫(xiě)的字符串//輸出原字符串echo$str;?>24大小寫(xiě)轉(zhuǎn)換運(yùn)行結(jié)果如圖5-5所示。圖5-5大小寫(xiě)轉(zhuǎn)換25截取字符串在PHP中,如果要截取某個(gè)字符串中指定長(zhǎng)度的字符,可以使用substr()函數(shù)來(lái)實(shí)現(xiàn)。其語(yǔ)法格式如下:stringsubstr(string$string,int$start[,int$length])
參數(shù)string為要操作的字符串。參數(shù)start為要截取的字符串的開(kāi)始位置,若start為負(fù)數(shù)時(shí),則表示從倒數(shù)第start開(kāi)始截取length個(gè)字符;若start為0,則表示從字符串的第1個(gè)字符開(kāi)始??蛇x參數(shù)length為要截取的字符串長(zhǎng)度,若在使用時(shí)不指定該參數(shù),則默認(rèn)截取到字符串結(jié)尾。若length為負(fù)數(shù),則表示從start開(kāi)始向右截取到末尾倒數(shù)第length個(gè)字符的位置。
26截取字符串(實(shí)例位置:素材與實(shí)例\example\ph05\05)【例5-5】字符串截取。實(shí)例代碼如下:<?php$str="Thisisaverybeautifulbox.";echo"原字符串:$str<br>";echo"截取字符串:".substr($str,8)."<br>";echo"截取字符串:".substr($str,8,6)."<br>";echo"截取字符串:".substr($str,-4)."<br>";echo"截取字符串:".substr($str,-19,-4)."<br>";?>27截取字符串運(yùn)行結(jié)果如圖5-6所示。圖5-6字符串截取28查找字符串在PHP中,如果需要對(duì)字符串進(jìn)行查找和檢索操作,可以使用strstr()和strpos()函數(shù)。1strstr()函數(shù)strstr()函數(shù)用于搜索指定字符串在另一個(gè)字符串中的第一次出現(xiàn),其語(yǔ)法格式如下:stringstrstr(string$haystack,mixed$needle)參數(shù)haystack為被搜索的字符串,參數(shù)知識(shí)庫(kù)needle為要搜索的字符串(指定字符串)。該函數(shù)返回自匹配點(diǎn)開(kāi)始至被搜索字符串結(jié)尾的部分。如果未找到所搜索的字符串,則返回false。可以使用該函數(shù)獲取上傳圖片的后綴,來(lái)限制上傳圖片的格式。29查找字符串2strpos()函數(shù)strpos()函數(shù)用于檢索字符串內(nèi)指定的字符或文本。其語(yǔ)法格式如下:mixedstrpos(string$haystack,mixed$needle[,int$start])該函數(shù)將返回needle存在于haystack字符串中起始的字符位置(字符串位置從0開(kāi)始,不是從1)。如果未找到匹配,則將返回false。可選參數(shù)start為開(kāi)始搜索的位置。30查找字符串(實(shí)例位置:素材與實(shí)例\example\ph05\06)【例5-6】查找字符串。實(shí)例代碼如下:<?php$str="IloveBeijingTiananmen!";echo"原字符串為:$str<br>";echostrstr($str,"Beijing")."<br>";echo"<hr>";echostrpos($str,"Beijing")."<br>";?>31查找字符串運(yùn)行結(jié)果如圖5-7所示。圖5-7查找字符串32替換字符串在PHP中,要對(duì)某字符串中的指定字符進(jìn)行替換,可以使用字符串替換函數(shù)str_replace()來(lái)實(shí)現(xiàn)。其語(yǔ)法格式如下:mixedstr_replace(mixed$find,mixed$replace,mixed$subject[,int&$count])參數(shù)find為要查找的字符串,參數(shù)replace為用來(lái)替換的字符串,參數(shù)subject為被搜索的字符串,可選參數(shù)count為執(zhí)行替換的數(shù)量。33替換字符串(實(shí)例位置:素材與實(shí)例\example\ph05\07)【例5-7】替換字符串。實(shí)例代碼如下:<?php$str="BJJQE/";echo"原字符串為:$str<br>";echo"替換字符串后:".str_replace('BJJQE','北京金企鵝',$str);?>34替換字符串運(yùn)行結(jié)果如圖5-8所示。圖5-8替換字符串35替換字符串該函數(shù)必須遵循以下規(guī)則:
如果搜索的字符串是數(shù)組,那么它將返回?cái)?shù)組。如果搜索的字符串是數(shù)組,那么它將對(duì)數(shù)組中的每個(gè)元素進(jìn)行查找和替換。如果同時(shí)需要對(duì)數(shù)組進(jìn)行查找和替換,并且需要執(zhí)行替換的元素少于查找到的元素的數(shù)量,那么多余元素將用空字符串進(jìn)行替換。如果查找的是數(shù)組,而替換的是字符串,那么替換字符串將對(duì)所有查找到的值起作用。
36返回整個(gè)模式匹配的次數(shù)(可能為零),出錯(cuò)則返回false。Perl兼容正則表達(dá)式函數(shù)漢字占兩個(gè)字符,數(shù)字、英文、小式,還可以用給出的實(shí)例字符串或文件快速地進(jìn)行測(cè)試匹txt”即可理解為一個(gè)簡(jiǎn)單的正則表達(dá)式。//定義字符串類型的變量正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字3種形式來(lái)表示:?jiǎn)我?hào)(’(實(shí)例位置:素材與實(shí)例\example\ph05\10)var_dump($match2);參數(shù)start為要截取的字符串的開(kāi)始位置,若start為負(fù)數(shù)時(shí),則表示從倒“<body>”標(biāo)簽中輸入Perl兼容正則表達(dá)式函數(shù)substr($str,-19,-4).echo"原字符串為:$str<br>";學(xué)習(xí)目標(biāo)5.1認(rèn)識(shí)字符串5.2字符串常用操作5.3正則表達(dá)式本章實(shí)訓(xùn)本章總結(jié)375.3正則表達(dá)式385.3正則表達(dá)式正則表達(dá)式簡(jiǎn)介正則表達(dá)式的語(yǔ)法規(guī)則Perl兼容正則表達(dá)式函數(shù)測(cè)試正則表達(dá)式3939正則表達(dá)式簡(jiǎn)介正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符,及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,該“規(guī)則字符串”描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串??梢哉f(shuō),正則表達(dá)式是作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。40正則表達(dá)式簡(jiǎn)介接觸過(guò)DOS的用戶可能知道,如果想要匹配當(dāng)前文件夾下所有的文本文件,可以輸入“dir*.txt”命令,按【Enter】鍵后所有“.txt”文件都會(huì)被列出來(lái)。此處的“*.txt”即可理解為一個(gè)簡(jiǎn)單的正則表達(dá)式。在PHP中,正則表達(dá)式基本上有以下3個(gè)作用:
判斷給定字符串是否匹配正則表達(dá)式。用新文本替換匹配文本。將一個(gè)字符串拆分為一組更小的信息塊,從字符串中獲取其特定部分。41正則表達(dá)式的語(yǔ)法規(guī)則正則表達(dá)式由一些普通字符和一些元字符(特殊字符)以及模式修正符組成。普通字符包括大小寫(xiě)的字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、非打印字符(如換行符、回車符等)以及雙引號(hào)、單引號(hào)等符號(hào);而元字符則是一些具有特殊含義的符號(hào),如“*”“?”等。在最簡(jiǎn)單的情況下,一個(gè)正則表達(dá)式看上去就是一個(gè)普通的字符串。例如,正則表達(dá)式“testing”中沒(méi)有包含任何元字符,它可以匹配“testing”和“testing123”等字符串,但是不能匹配“Testing”。42正則表達(dá)式的語(yǔ)法規(guī)則1元字符元字符是指在正則表達(dá)式中具有特殊意義的字符。要想真正用好正則表達(dá)式,必須正確理解元字符的應(yīng)用。表5-1列出了常用元字符及對(duì)其的簡(jiǎn)單描述。(見(jiàn)書(shū)相應(yīng)位置所示)提示只有連字符在字符組內(nèi)部,并且出現(xiàn)在兩個(gè)字符之間時(shí),才能表示字符的范圍;如果出現(xiàn)在字符組的開(kāi)頭,則只能表示連字符本身。43正則表達(dá)式的語(yǔ)法規(guī)則表5-2給出了反斜杠指定的預(yù)定義字符集。表5-2反斜杠指定的預(yù)定義字符集預(yù)定義字符集說(shuō)明\d\D匹配一個(gè)數(shù)字字符,等價(jià)于[0-9]匹配一個(gè)非數(shù)字字符,等價(jià)于[^0-9]匹配任何不可見(jiàn)字符,包括空格、制表符、換行符等,等價(jià)\s于[\f\n\r\t\v]\S匹配任何可見(jiàn)字符,等價(jià)于[^\f\n\r\t\v]匹配包括下劃線的任何單詞字符,類似但不等價(jià)于“[A-Za-z0-\w9_]”\W匹配任何非單詞字符,等價(jià)于“[^A-Za-z0-9_]”44正則表達(dá)式的語(yǔ)法規(guī)則2模式修正符模式修正符的作用是規(guī)定正則表達(dá)式該如何解釋和應(yīng)用,PHP中的常用模式修正符如表5-3所示。表5-3PHP中的常用模式修正符修正符說(shuō)明i忽略大小寫(xiě)模式多行匹配。僅當(dāng)表達(dá)式中出現(xiàn)“^”“$”中的至少一個(gè)元字符且字符串m有換行符時(shí),“m”修飾符才起作用。“m”修飾符可以改變“^”為表示每一行的頭部s改變?cè)址?”的含義,使其可以代表所有字符(包括換行符),其他模式不能匹配換行符x忽略空白字符45Perl兼容正則表達(dá)式函數(shù)“Perl兼容正則表達(dá)式(PerlCompatibleRegularExpression)”簡(jiǎn)稱PCRE,也有稱其為“PCRE兼容正則表達(dá)式”。Perl是一種編程語(yǔ)言,其字符處理功能非常強(qiáng)大,此處的PCRE就是使用了Perl的正則函數(shù)庫(kù)。在PCRE中,表達(dá)式應(yīng)被包含在定界符中,一般是斜線“/”。實(shí)現(xiàn)PCRE風(fēng)格正則表達(dá)式的函數(shù)有7個(gè),下面分別介紹。46Perl兼容正則表達(dá)式函數(shù)1preg_grep()函數(shù)函數(shù)語(yǔ)法格式如下:arraypreg_grep(string$pattern,array$input)函數(shù)preg_grep()返回一個(gè)數(shù)組,其中包括$input數(shù)組中與給定的$pattern模式相匹配的元素。對(duì)于數(shù)組$input中的每個(gè)元素,preg_grep()只進(jìn)行一次匹配。47Perl兼容正則表達(dá)式函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\08)【例5-8】preg_grep()函數(shù)的應(yīng)用。實(shí)例代碼如下:<?php$subjects=array("MechanicalEngineering","Medicine","SocialScience","Agriculture","CommercialScience","Politics");//匹配所有僅由一個(gè)單詞組成的科目名$alonewords=preg_grep("/^[a-z]*$/i",$subjects);var_dump($alonewords);?>48Perl兼容正則表達(dá)式函數(shù)運(yùn)行結(jié)果如圖5-9所示。圖5-9preg_grep()函數(shù)的應(yīng)用49Perl兼容正則表達(dá)式函數(shù)2preg_match()和preg_match_all()函數(shù)preg_match()函數(shù)用于匹配字符串。其語(yǔ)法格式如下:intpreg_match(string$pattern,string$subject[,array&$matches])該函數(shù)在字符串subject中搜索與表達(dá)式pattern相匹配的內(nèi)容,成功則返回整個(gè)模式匹配的次數(shù)(可能為零),出錯(cuò)則返回false。如果定義了數(shù)組matches,則將每次匹配的結(jié)果存儲(chǔ)到該數(shù)組中。preg_match()第一次匹配成功后就會(huì)停止匹配,如果要實(shí)現(xiàn)全部結(jié)果的匹配,即搜索到subject結(jié)尾處,則需使用preg_match_all()函數(shù)。50Perl兼容正則表達(dá)式函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\09)【例5-9】使用preg_match()和preg_match_all()函數(shù)匹配字符串。實(shí)例代碼如下:<?php$str="php功能強(qiáng)大,學(xué)習(xí)php是一件快樂(lè)的事。";$preg="/[x80-xff]+/";$a=preg_match($preg,$str,$match1);echo$a."<br>";var_dump($match1);$b=preg_match_all($preg,$str,$match2);echo"<p>".$b."<br>";var_dump($match2);?>51Perl兼容正則表達(dá)式函數(shù)運(yùn)行結(jié)果如圖5-10所示。圖5-10使用preg_match()和preg_match_all()函數(shù)52Perl兼容正則表達(dá)式函數(shù)3preg_quote()函數(shù)該函數(shù)可以對(duì)特殊字符進(jìn)行自動(dòng)轉(zhuǎn)義,其語(yǔ)法格式如下:stringpreg_quote(string$str[,string$delimiter])該函數(shù)給字符串str中的所有特殊字符前面加上一個(gè)反斜線,對(duì)其進(jìn)行自動(dòng)轉(zhuǎn)義。如果定義了參數(shù)delimiter,則該參數(shù)所包含的字符串也將被轉(zhuǎn)義,函數(shù)返回轉(zhuǎn)義后的字符串。提示正則表達(dá)式的特殊字符包括:.\\+*?[^]$(){}=!<>|:。53Perl兼容正則表達(dá)式函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\10)【例5-10】對(duì)字符串進(jìn)行自動(dòng)轉(zhuǎn)義。實(shí)例代碼如下:<?php$k1="$40forag3/400";$k2=preg_quote($k1,"/");echo"原字符串:".$k1."<br>";echo"轉(zhuǎn)義字符串:".$k2;?>54Perl兼容正則表達(dá)式函數(shù)運(yùn)行結(jié)果如圖5-11所示。圖5-11將字符串自動(dòng)轉(zhuǎn)義55Perl兼容正則表達(dá)式函數(shù)4preg_replace()函數(shù)preg_replace()函數(shù)用于正則表達(dá)式的搜索和替換,其語(yǔ)法格式如下:mixedpreg_replace(mixed$pattern,mixed$replacement,mixed$subject[,int$limit])該函數(shù)在字符串subject中匹配表達(dá)式pattern,并將匹配項(xiàng)替換成字符串replacement。如果定義了參數(shù)limit,則替換limit次。上述參數(shù)除limit外都可以是一個(gè)數(shù)組。如果pattern和replacement都是數(shù)組,將以其鍵名在數(shù)組中出現(xiàn)的順序來(lái)進(jìn)行處理,這不一定和索引的數(shù)字順序相同。如果使用索引來(lái)標(biāo)識(shí)哪個(gè)pattern將被哪個(gè)replacement替換,應(yīng)該在調(diào)用preg_replace()之前用ksort()函數(shù)對(duì)數(shù)組進(jìn)行排序。56Perl兼容正則表達(dá)式函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\11)【例5-11】替換字符串。實(shí)例代碼如下:<?php$k1="Thequickbrownfoxjumpedoverthelazydog.";//定義變量//定義變量,$k2=preg_replace('/\s/','-',$k1);//并將替換后的字符串賦給它echo"原字符串:".$k1."<br>";echo"替換空格后的字符串:".$k2;?>//輸出字符串變量$k1//輸出字符串變量$k257Perl兼容正則表達(dá)式函數(shù)運(yùn)行結(jié)果如圖5-12所示。圖5-12替換字符串58Perl兼容正則表達(dá)式函數(shù)5preg_split()函數(shù)preg_split()函數(shù)用于分割字符串,其語(yǔ)法格式如下:arraypreg_split(string$pattern,string$subject[,int$limit[,int$flags]])該函數(shù)返回一個(gè)數(shù)組,包含字符串subject經(jīng)正則表達(dá)式pattern作為邊界所分割出的子串。如果定義了參數(shù)limit,則最多返回limit個(gè)子串,如果limit是-1,則意味著沒(méi)有限制,可以用來(lái)繼續(xù)指定可選參數(shù)flags。59Perl兼容正則表達(dá)式函數(shù)(實(shí)例位置:素材與實(shí)例\example\ph05\12)【例5-12】分割字符串。實(shí)例代碼如下:<?php$str="phpmysql,apacheajax";$keywords=preg_split("/[\s,]+/",$str);//定義字符串變量//定義變量,//并將分割后的字符串賦給它print_r($keywords);?>//輸出分割后的字符串組成的數(shù)組60Perl兼容正則表達(dá)式函數(shù)運(yùn)行結(jié)果如圖5-13所示。圖5-13分割字符串61測(cè)試正則表達(dá)式正則表達(dá)式的語(yǔ)法很難理解,且容易出錯(cuò),即便是對(duì)經(jīng)常使用的人來(lái)說(shuō)也是如此。這就需要有一種工具來(lái)對(duì)其進(jìn)行測(cè)試。RegexBuddy正好滿足了這個(gè)需要。它可以容易地建立正確的正則表達(dá)式,清晰地推斷復(fù)雜的正則表達(dá)式,還可以用給出的實(shí)例字符串或文件快速地進(jìn)行測(cè)試匹配,從而有效避免在實(shí)際應(yīng)用中出現(xiàn)錯(cuò)誤。62測(cè)試正則表達(dá)式可以在網(wǎng)上下載RegexBuddy軟件,其安裝比較簡(jiǎn)單,此處不再贅述。啟動(dòng)RegexBuddy后,默認(rèn)頂部顯示正則表達(dá)式和前一次使用的歷史,底部顯示其他選項(xiàng)卡,分別是“Create”“Convert”“Test”“Debug”“Use”“Library”“GREP”和“Forum”,如圖5-14所示。圖5-14RegexBuddy默認(rèn)界面63測(cè)試正則表達(dá)式為便于使用,可以單擊窗口右上方工具欄上的“View”按鈕“SidebySideLayout”,這樣可以最大限度地同時(shí)查看兩個(gè)窗口,如圖5-15所示。,在其下拉菜單中選擇圖5-15切換窗口顯示方式64測(cè)試正則表達(dá)式接下來(lái)用RegexBuddy建立一個(gè)簡(jiǎn)單的正則表達(dá)式。在左上方的正則表達(dá)式區(qū)域輸入“^[0-9]*$”有數(shù)字的正則表達(dá)式,然后在“Test”9065265hgf、56464(每輸入一個(gè)換一行),并在“Test”區(qū)域左上角的下拉列表中選擇“Linebyline”,如圖5-16所示。正則表達(dá)式區(qū)域歷史記錄,也就是只允許區(qū)域輸入測(cè)試文本:“Test”區(qū)域、hhh、45002、相關(guān)面板區(qū)域輸出結(jié)果圖5-16測(cè)試正則表達(dá)式65學(xué)習(xí)目標(biāo)5.1認(rèn)識(shí)字符串5.2字符串常用操作5.3正則表達(dá)式本章實(shí)訓(xùn)本章總結(jié)66--驗(yàn)證上傳圖片的格式(實(shí)例位置:素材與實(shí)例\exercise\ph05\01)一般在網(wǎng)站上傳圖片時(shí),對(duì)其格式是有一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025服務(wù)員聘用合同
- 2025借款合同填寫(xiě)注意事項(xiàng)
- 施工安全合同書(shū)(乙方承擔(dān)全部責(zé)任版)
- 課題申報(bào)參考:黎巴嫩女性文學(xué)中的性別敘事與國(guó)家建構(gòu)
- 課題申報(bào)參考:老齡化背景下衰老信念對(duì)年長(zhǎng)員工工作績(jī)效影響的機(jī)制研究
- 2025年新世紀(jì)版選修1歷史上冊(cè)階段測(cè)試試卷
- 2025年外研版三年級(jí)起點(diǎn)選擇性必修三語(yǔ)文上冊(cè)月考試卷
- 2024年華東師大版八年級(jí)地理上冊(cè)月考試卷含答案
- 2025年人教新起點(diǎn)八年級(jí)歷史下冊(cè)月考試卷含答案
- 2025年度物聯(lián)網(wǎng)設(shè)備制造與銷售合同范本4篇
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 護(hù)理指南手術(shù)器械臺(tái)擺放
- 腫瘤患者管理
- 2025年中國(guó)航空部附件維修行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局、行業(yè)政策及需求規(guī)模預(yù)測(cè)報(bào)告
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢(shì)白皮書(shū)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 零部件測(cè)繪與 CAD成圖技術(shù)(中職組)沖壓機(jī)任務(wù)書(shū)
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- 高低壓配電柜產(chǎn)品營(yíng)銷計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論