php字符串操作與正則表達(dá)式_第1頁
已閱讀1頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2,第4章 PHP字符串操作與正則表達(dá)式,字符串是PHP程序相當(dāng)重要的一部分操作內(nèi)容,程序傳遞給我們的可視化信息,絕大多數(shù)都是靠字符串來實(shí)現(xiàn)的。例如本書開始時的Hello World程序就是輸出了一個“Hello World!”的字符串。本章將詳細(xì)解釋PHP中的字符串以及字符串的連接、分割、比較、查找和替換等操作。,3,4.1 字符串的定義,美國國家標(biāo)準(zhǔn)學(xué)會(American National Standard Institut

2、e,ANSI)制定了一整套可見的字符(如大寫字母A)和不可見的字符(如回車符、退格符等控制字符),共127個字符。由零個或者多個字符組成的有限序列,也就是n(n≥0)個字符的集合,叫做字符串。 在書寫上,字符串一般都寫在成對的單引號或者雙引號中。例如:我的新聞網(wǎng)';/*一個由HTML代碼組成的字符串,單引號中嵌套成對使用的雙引號*/?>,4,4.2 字符串的格式化,在程序運(yùn)行的過程中,字符串往往并不是以我們所需要

3、的形式出現(xiàn)的,此時,就需要對該字符串進(jìn)行格式化處理,如刪除字符串中多余的空格。,5,4.2.1 字符串整理:chop()、ltrim()和trim(),1. chop()函數(shù)語法:string chop(string $str[, string $charlist])函數(shù)作用:去除字符串尾部的空格等特殊字符,如果指定了第2個參數(shù),則去除字符串尾部中的由第2個參數(shù)指定的字符。函數(shù)例程:,6,4.2.1 字符串整理:chop()

4、、ltrim()和trim(),2. ltrim()函數(shù)語法:string ltrim (string $str[, string $charlist])函數(shù)作用:去除字符串頭部的空格等特殊字符,如果指定了第2個參數(shù),則去除字符串頭部中的由第2個參數(shù)指定的字符。函數(shù)例程:,7,4.2.1 字符串整理:chop()、ltrim()和trim(),3. trim()函數(shù)語法:string trim(string $str[, s

5、tring $charlist])函數(shù)作用:去除字符串頭部和尾部的空格等特殊字符,如果指定了第2個參數(shù),則去除字符串頭部和尾部中的由第2個參數(shù)指定的字符。函數(shù)例程:,8,4.2.2 addslashes()和stripslashes(),1. addslashes()函數(shù)語法:string addslashes(string str)函數(shù)作用:使用反斜線引用字符串。函數(shù)例程:,9,4.2.2 addslashes()和

6、stripslashes(),2. stripslashes()stripslashes()函數(shù)與addslashes()相反,是把被addslashes()函數(shù)加上的轉(zhuǎn)義符取消。函數(shù)語法:string stripslashes(string)函數(shù)例程:,10,4.2.3 字符串的大小寫轉(zhuǎn)換,1. strtoupper()函數(shù)語法:string strtoupper(string $string)函數(shù)說明:將字符串stri

7、ng的字母全部以大寫字母的形式返回。函數(shù)例程:,11,4.2.3 字符串的大小寫轉(zhuǎn)換,2. strtolower()函數(shù)語法:string strtolower(string $string)函數(shù)說明:將字符串string的字母全部以小寫字母的形式返回。函數(shù)例程:,12,4.3 字符串的連接和分割,在PHP程序設(shè)計過程中,經(jīng)常需要定義各種各樣的字符串以供使用,就會碰到多個字符串合并或者將一個大字符串分割成為幾個子字符串的

8、應(yīng)用需求。我們已經(jīng)知道可以用“.”運(yùn)算符來連接多個字符串成為一個新的字符串。本節(jié)要反其道而行之,將學(xué)習(xí)如何把一個字符串分割成多個子字符串。,13,4.3.1 使用explode()、implode()和join(),1. explode()函數(shù)語法:array explode(string $separator, string $string[, int $limit])函數(shù)作用:將字符串$string用$separato

9、r來分割,每出現(xiàn)一次$separator,就多出一個由兩個$separator之間的字符組成的字符串元素,函數(shù)最后的返回值是一個數(shù)組。如果使用了第3個參數(shù)$limit,則函數(shù)返回的數(shù)組最多包含$limit個元素,剩余未被分割的字符串作為最后一個元素。函數(shù)實(shí)際使用時,最常見的$separator是空格或者“||”、“,”。函數(shù)例程:參見教材P71,14,4.3.1 使用explode()、implode()和join(),2. im

10、plode()和join()函數(shù)語法:string implode(string $glue, array $pieces)函數(shù)作用:把數(shù)組的各元素合成為一個用$glue連接起來的字符串。函數(shù)例程:,15,4.3.2 使用strtok()函數(shù),函數(shù)語法:string strtok(string $str, string $token)函數(shù)作用:字符串$str用字符串$token的值切開成小段小段的字符串,返回$token

11、第一次出現(xiàn)前的部分子字符串,如果重復(fù)執(zhí)行該函數(shù),則不再需要$str參數(shù),將依次返回后續(xù)的下一個$token出現(xiàn)前的部分子字符串。函數(shù)例程:";$tok = strtok(" "); //只有第一次調(diào)用strtok()函數(shù)時需要使用$string參數(shù)}/*輸出:單詞=I單詞=like單詞=this單詞=game*/?>,16,4.3.3 使用substr()函數(shù),函數(shù)語法:str

12、ing substr(string $string, int $start[, int $length])函數(shù)作用:取得字符串$string從$start開始的$length長度的子字符串,如果沒有$length參數(shù),則取到$string的最后一個字符。函數(shù)例程:,17,4.4 字符串的比較,在現(xiàn)實(shí)生活中,我們經(jīng)常按照姓氏筆劃的多少或者拼音順序來給多人排序,26個英文字母和10個阿拉伯?dāng)?shù)字也能按照從小到大或者從大到小的規(guī)則進(jìn)行

13、排序,在程序設(shè)計中,由字母和數(shù)字組成的字符串,同樣可以按照指定的規(guī)則來排列順序。PHP提供了strcmp()、strcasecmp()和strnatcmp()幾個函數(shù)來對字符串進(jìn)行排序比較。,18,4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp(),1. strcmp()函數(shù)語法:int strcmp(string $str1, string $str2)函數(shù)說明:本函數(shù)用來比較兩個

14、字符串的大小。返回負(fù)數(shù)表示str1小于str2;返回正數(shù)表示str1大于str2;返回零表示兩個字符串相同。函數(shù)例程:,19,4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp(),2. strcasecmp()函數(shù)語法:int strcasecmp(string $str1, string $str2, int $len)函數(shù)說明:strcasecmp()用來比較參數(shù)str1和str

15、2字符串,比較時會自動忽略大小寫的差異。第3個參數(shù)len表示要比較的長度。函數(shù)例程:,20,4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp(),3. strnatcmp()函數(shù)語法:int strnatcmp(string $str1, string $str2)函數(shù)說明:按照自然規(guī)則比較兩個字符串的大小。返回負(fù)數(shù)表示str1小于str2;返回正數(shù)表示str1大于str2;返回零表

16、示兩個字符串相同。函數(shù)例程:,21,4.4.2 獲取字符串長度,字符串是由一個或多個字符組成的,那么如何得知某個特定的字符串是由多少個字符來組成的呢?PHP提供了strlen()函數(shù)來獲得字符串的長度。函數(shù)語法:int strlen(string $string)函數(shù)說明:返回字符串string的長度。函數(shù)例程:,22,4.5 字符串的查找和替換,字符串的連接、分割以及對字符串的查找和替換,是字符串應(yīng)用最多的操作。

17、本節(jié)學(xué)習(xí)字符串的查找和替換。,23,4.5.1 字符串的查找:strstr()、stristr()和strrchr(),1. strstr()函數(shù)語法:string strstr(string $haystack, string $needle, bool $before_needle)函數(shù)說明:在字符串haystack中查找子字符串needle第一次出現(xiàn)的位置,并返回字符串haystack中從字符串needle開始到母字符串

18、結(jié)束的部分。如果參數(shù)before_needle為true,則返回字符串haystack中從開始到字符串needle第一次出現(xiàn)位置之間的字符串。函數(shù)例程:,24,4.5.1 字符串的查找:strstr()、stristr()和strrchr(),2. stristr()函數(shù)語法:string stristr(string $haystack, string $needle, bool $before_needle)函數(shù)說明:

19、同strstr(),不同之處為本函數(shù)不區(qū)分大小寫。函數(shù)例程:,25,4.5.1 字符串的查找:strstr()、stristr()和strrchr(),3. strrchr()函數(shù)語法:string strrchr(string $haystack, string $needle)函數(shù)說明:本函數(shù)用來尋找字符串haystack中的字符needle最后一次出現(xiàn)的位置,并返回此位置起至字符串haystack結(jié)束之間的字符串。若

20、沒有找到needle則返回false。函數(shù)例程:,26,4.5.2 查找子字符串的位置:strpos()、strrpos(),1. strpos()函數(shù)語法:int strpos(string $haystack, mixed $needle[, int $offset])函數(shù)說明:尋找字符串haystack中的字符needle最先出現(xiàn)的位置。值得注意的是needle只能是一個字符,中文字等就不適合了。若找不到指定的字符,

21、則返回false值。參數(shù)offset可省略,用來表示從offset位置處開始找。函數(shù)例程:,27,4.5.2 查找子字符串的位置:strpos()、strrpos(),2. strrpos()函數(shù)語法:int strrpos(string $haystack, string $needle[, int $offset])函數(shù)說明:與strpos()略同,不同之處是查找并返回needle最后一次出現(xiàn)的位置。函數(shù)例程:,2

22、8,4.5.2 查找子字符串的位置:strpos()、strrpos(),3. 其他函數(shù)語法:int stripos(string $haystack, string $needle[, int $offset])函數(shù)說明:同strpos(),忽略大小寫。函數(shù)語法:int strripos(string $haystack, string $needle[, int $offset])函數(shù)說明:同strrpos()

23、,忽略大小寫。,29,4.5.3 字符串的替換:str_replace()、substr_replace(),1. str_replace()函數(shù)語法:mixed str_replace(mixed $search, mixed $replace, mixed $subject[, int &$count])函數(shù)說明:將字符串replace代入subject字符串中,將所有的search置換成replace。函數(shù)例程

24、:_首頁_';$text_one = str_replace('_首頁_$text_two = str_replace('_', '', $text_one);echo $text_two;//輸出首頁?>,30,4.5.3 字符串的替換:str_replace()、substr_replace(),2. substr_replace()函數(shù)語法:mixed sub

25、str_replace(mixed $string, string $replacement, int $start[, int $length])函數(shù)說明:在原字符串string從start開始的位置開始替換為replacement。開始替換的位置應(yīng)該小于原字符串的長度,可選參數(shù)length為要替換的長度。函數(shù)例程:,31,4.6 字符串的加密和編碼,為了保護(hù)敏感的內(nèi)容,我們通常將其加密存儲,PHP提供了多個加密函數(shù),最常用

26、的是MD5散列加密。,32,4.6.1 字符串的MD5加密,函數(shù)語法:string md5(string $str[, bool $raw_output])函數(shù)說明:返回字符串str的MD5散列值。函數(shù)例程:,33,4.6.2 字符串的編碼,1. urlencode()函數(shù)語法:string urlencode(string $str)函數(shù)說明:將字符串str按照URL方式編碼,除了“-”、“_”和“.”之外的所有

27、非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(+)。函數(shù)例程:,34,4.6.2 字符串的編碼,2. urldecode()函數(shù)語法:string urldecode(string $str)函數(shù)說明:解碼給出的已編碼字符串中的任何%##。返回解碼后的字符串。函數(shù)例程:,35,4.6.2 字符串的編碼,3. base64_encode()函數(shù)語法:string base64_enco

28、de(string $data)函數(shù)說明:返回使用base64對data進(jìn)行的編碼。設(shè)計此種編碼是為了使二進(jìn)制數(shù)據(jù)可以通過非純8-bit的傳輸層傳輸,例如電子郵件的主體。Base64-encoded數(shù)據(jù)要比原始數(shù)據(jù)多占用33%左右的空間。函數(shù)例程:,36,4.6.2 字符串的編碼,4. base64_decode()函數(shù)語法:string base64_decode(string $encoded_data)函數(shù)說明:

29、針對encoded_data進(jìn)行解碼,返回原始數(shù)據(jù),失敗則返回false。函數(shù)例程:,37,4.7 正則表達(dá)式簡介,正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)有力的工具。 正則表達(dá)式可以讓用戶通過使用一系列的特殊字符構(gòu)建匹配模式,然后把匹配模式與數(shù)據(jù)文件、程序輸入以及Web頁面的表單輸入等目標(biāo)對象進(jìn)行比較,根據(jù)比較對象中是否包含匹配模式,執(zhí)行相應(yīng)的程序。正則表達(dá)式的使用,可以通過簡單的辦法來實(shí)現(xiàn)強(qiáng)大的功能。 通俗地講,正則表

30、達(dá)式(Regular Expression)就是用一個“字符串”來描述一個特征,然后去驗(yàn)證另一個“字符串”是否符合這個特征。,38,4.7 正則表達(dá)式簡介,正則表達(dá)式的用途非常廣泛,如:①驗(yàn)證字符串是否符合指定特征②用來查找字符串③用來替換,比普通的替換更強(qiáng)大。正則表達(dá)式是由普通字符(例如字符a到z)以及特殊字符(稱為元字符)組成的文字模式。正則表達(dá)式作為一個模板,將某個字符模式與所搜索的字符串進(jìn)行匹配。正則表達(dá)式的組件可以

31、是單個的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。,39,4.7.1 普通字符,普通字符由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母、所有數(shù)字、所有標(biāo)點(diǎn)符號以及其他一些符號。表達(dá)式中的普通字符,在匹配一個字符串的時候,匹配與之相同的一個字符。如表達(dá)式 “c”,在匹配字符串 “abcde” 時成功;匹配到的內(nèi)容是“c”;匹配到的位置開始于2,結(jié)束于3。再如,表達(dá)式 “bcd”

32、,在匹配字符串 “abcde” 時成功;匹配到的內(nèi)容是 “bcd”;匹配到的位置開始于1,結(jié)束于4。,40,4.7.2 非打印字符,非打印字符如表4-1所示。,41,4.7.3 特殊字符,所謂特殊字符,就是一些有特殊含義的字符,如通常用“*”表示任何字符串。正則表達(dá)式的特殊字符如表4-2所示。,42,4.7.4 限定符,限定符用來指定正則表達(dá)式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配條件。有*、+、?、{n}、{n,}、{n,m

33、},共6種。正則表達(dá)式的限定符如表4-3所示。,43,4.7.5 定位符,定位符用來描述字符串或單詞的邊界,共有4個,如表4-4所示。,44,4.7.6 選擇,用圓括號將所有選擇項(xiàng)括起來,相鄰的選擇項(xiàng)之間用“|”分隔。但用圓括號會有一個副作用,是相關(guān)的匹配會被緩存,此時可用?:放在第一個選項(xiàng)前來消除這種副作用。其中?:是非捕獲元之一,還有兩個非捕獲元是?=和?!,這兩個還有更多的含義,前者為正向預(yù)查,在任何開始匹配圓括號內(nèi)的正則

34、表達(dá)式模式的位置來匹配搜索字符串,后者為負(fù)向預(yù)查,在任何開始不匹配該正則表達(dá)式模式的位置來匹配搜索字符串。,45,4.7.7 后向引用,對一個正則表達(dá)式模式或部分模式兩邊添加圓括號將導(dǎo)致相關(guān)匹配存儲到一個臨時緩沖區(qū)中,所捕獲的每個子匹配都按照在正則表達(dá)式模式中從左至右所遇到的內(nèi)容存儲。存儲子匹配的緩沖區(qū)編號從1開始,連續(xù)編號直至最大99個子表達(dá)式。每個緩沖區(qū)都可以使用‘\n’訪問,其中n為一個標(biāo)識特定緩沖區(qū)的一位或兩位十進(jìn)制數(shù)。可

35、以使用非捕獲元字符 ‘?:’、‘?=’ 或 ‘?!’ 來忽略對相關(guān)匹配的保存。,46,4.7.8 幾個正則表達(dá)式匹配的例子,(1)表達(dá)式“(’|”)(.*?)(\1)”在匹配“ ‘Hello’, “World” ”時成功,匹配到的內(nèi)容是“ ‘Hello’ ”。再次匹配時可以匹配到“ “World” ”(注意程序中引號均無方向)。(2)表達(dá)式“(\w)\1{4,}” 在匹配 “aa bbbb abcdefg ccccc 11112

36、1111 999999999” 時成功;匹配到的內(nèi)容是 “ccccc”。再次匹配時,將得到 999999999。這個表達(dá)式要求 “\w” 范圍的字符至少重復(fù)5次,注意與 “\w{5,}” 之間的區(qū)別。(3)表達(dá)式 “.*?” 在匹配 “” 時成功。如果 “” 與 “” 不配對,則會匹配失敗;如果改成其他配對,也可以匹配成功。,47,4.7.8 幾個正則表達(dá)式匹配的例子,(4)“^The”:表示所有以“The”開始的字符串(“Th

37、ere”和“The cat”等)。(5)“of despair$”:表示所有以“of despair”結(jié)尾的字符串。(6)“^abc$”:表示開始和結(jié)尾都是“abc”的字符串。(7)“notice”:表示任何包含“notice”的字符串。(8)‘*’、‘+’和‘?’這三個符號,表示一個或一序列字符重復(fù)出現(xiàn)的次數(shù)。它們分別表示“沒有或更多”、“一次或更多”及“沒有或一次”。 (9)用大括號表示重復(fù)次數(shù)的范圍。 (10

38、)‘|’表示“或”操作。 (11)‘.’可以替代任何字符。 (12)方括號表示某些字符允許在一個字符串中的某一特定位置出現(xiàn)。,48,4.7.9 常用的正則表達(dá)式,(1)非負(fù)整數(shù):^\d+$(2)正整數(shù):^[0-9]*[1-9][0-9]*$(3)非正整數(shù):^((-\d+)|(0+))$(4)負(fù)整數(shù):^-[0-9]*[1-9][0-9]*$(5)整數(shù):^-?\d+$(6)非負(fù)浮點(diǎn)數(shù):^\d+(\.\d+)

39、?$(7)正浮點(diǎn)數(shù):^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$(8)非正浮點(diǎn)數(shù):^((-\d+\.\d+)?)|(0+(\.0+)?))$(9)負(fù)浮點(diǎn)數(shù):^(-((正浮點(diǎn)數(shù)正則式)))$(10)英文字符串:^[A-Za-z]+$(11)英文大寫串:^[A-Z]+$(12)英文小寫串:^[a-z]+”

40、(13)英文字符數(shù)字串:^[A-Za-z0-9]+$(14)英數(shù)字加下劃線串:^\w+$(15)E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$(16)URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$,49,4.7.10 其他注意事項(xiàng),(1)如果要求表達(dá)式所匹配的內(nèi)容是整個字符串,而不是從字符串中找一部分,那么可以

41、在表達(dá)式的首尾使用“^”和“$”,例如“^\d+$”要求整個字符串只有數(shù)字。(2)如果要求匹配的內(nèi)容是一個完整的單詞,而不會是單詞的一部分,那么在表達(dá)式首尾使用“\b”,例如使用“\b(if|while|else|void|int...)\b”來匹配程序中的關(guān)鍵字。(3)表達(dá)式不要匹配空字符串。 (4)能匹配空字符串的子匹配不要循環(huán)無限次。 (5)合理選擇貪婪模式與非貪婪模式。(6)或 “|” 的左右兩邊,對某個字符

42、最好只有一邊可以匹配,這樣,不會因?yàn)?“|” 兩邊的表達(dá)式因?yàn)榻粨Q位置而有所不同。(7)注意:在方括號中不需要轉(zhuǎn)義字符。,50,4.8 PHP的正則表達(dá)式操作,本節(jié)將介紹PHP5中與正則表達(dá)式相關(guān)的函數(shù)。,51,4.8.1 獲得與模式匹配的數(shù)組單元:preg_grep,函數(shù)語法:array preg_grep(string $pattern, array $input[, int $flags])函數(shù)說明:返回一個包括了i

43、nput數(shù)組中與給定的pattern模式相匹配單元的新數(shù)組。如果參數(shù)flags為PREG_GREP_INVERT,則返回的是由不匹配pattern單元所組成的新數(shù)組。函數(shù)例程:"ASP", "選擇二"=>"PHP", "選擇三"=>"JSP", "選擇四"=>"JAVA", &

44、quot;選擇五"=>"C#");$newarr = preg_grep("/P+/", $arr); print_r($newarr); //將輸出:Array ( [選擇一] => ASP [選擇二] => PHP [選擇三] => JSP )$newarr = preg_grep("/P+/", $arr, PREG_GREP_IN

45、VERT); print_r($newarr); //將輸出:Array([選擇四] => JAVA [選擇五] => C#)?>,52,4.8.2 進(jìn)行全局正則表達(dá)式的匹配:preg_match_all,函數(shù)語法:int preg_match_all(string $pattern, string $subject, array $matches[, int $flags])函數(shù)說明:在subject中搜

46、索所有與pattern給出的正則表達(dá)式匹配的內(nèi)容,并將結(jié)果以flags指定的順序放到數(shù)組matches中。搜索到第一個匹配項(xiàng)之后,接下來的搜索從上一個匹配項(xiàng)末尾開始。函數(shù)例程:新浪新聞搜狐新聞網(wǎng)易新聞騰訊新聞';preg_match_all('/a href="(.*?)"/', $html_text, $href);preg_match_all('/title=&

47、quot;(.*?)"/', $html_text, $title);print_r($href[1]); /*會輸出:Array([0] => http://news.sina.com.cn [1] => http://news.sohu.com [2] => http://news.163.com [3] => http://news.qq.com)*/print_r($title[1

48、]); /*會輸出:Array([0] => 新浪新聞 [1] => 搜狐新聞 [2] => 網(wǎng)易新聞 [3] => 騰訊新聞)*/?>,53,4.8.3 進(jìn)行正則表達(dá)式的匹配:preg_match,函數(shù)語法:int preg_match(string $pattern, string $subject[, array $matches [, int $flags]])函數(shù)說明:在subject字

49、符串中搜索與pattern給出的正則表達(dá)式相匹配的內(nèi)容。 函數(shù)例程:新浪新聞搜狐新聞網(wǎng)易新聞騰訊新聞';preg_match('/a href="(.*?)"/', $html_text, $href);preg_match('/title="(.*?)"/', $html_text, $title);print_r($href[1]);

50、//將輸出:http://news.sina.com.cnprint_r($title[1]); //將輸出:新浪新聞?>,54,4.8.4 轉(zhuǎn)義正則表達(dá)式字符:preg_quote,函數(shù)語法:string preg_quote(string $str[, string $delimiter])函數(shù)說明:以str為參數(shù)并給其中每個屬于正則表達(dá)式語法的字符前面加上一個反斜線。如果你需要以動態(tài)生成的字符串作為模式去匹配,則

51、可以用此函數(shù)轉(zhuǎn)義其中可能包含的特殊字符。如果提供了可選參數(shù)delimiter,該字符也將被轉(zhuǎn)義??梢杂脕磙D(zhuǎn)義PCRE函數(shù)所需要的定界符,最常用的定界符是斜線 /。正則表達(dá)式的特殊字符包括 . \ + * ? [ ^ ] $ ( ) { } = ! | :。函數(shù)例程:,55,4.8.5 執(zhí)行正則表達(dá)式的搜索和替換函數(shù):preg_replace,函數(shù)語法:mixed preg_replace(mixed $pattern, mix

52、ed $replacement, mixed $subject[, int $limit])函數(shù)說明:在subject中搜索pattern模式的匹配項(xiàng)并替換為replacement。如果指定了limit,則僅替換limit個匹配,如果省略limit或者其值為-1,則所有的匹配項(xiàng)都會被替換。函數(shù)例程:參見教材P88,56,4.8.6 通過回調(diào)函數(shù)執(zhí)行正則表達(dá)式的搜索 和替換——preg_replace_callba

53、ck,函數(shù)語法:mixed preg_replace_callback(mixed $pattern, callback $callback, mixed $subject[, int $limit])函數(shù)說明:本函數(shù)的行為幾乎與preg_replace()一樣,除了不是提供一個replacement參數(shù),而是指定一個callback函數(shù)。該函數(shù)將以目標(biāo)字符串中的匹配數(shù)組作為輸入?yún)?shù),并返回用于替換的字符串。函數(shù)例程:參見教材

54、P88,57,4.8.7 用正則表達(dá)式進(jìn)行字符串分割preg_split,函數(shù)語法:array preg_split(string $pattern, string $subject[, int $limit[, int $flags]])函數(shù)說明:返回一個數(shù)組,包含subject中沿著與pattern匹配的邊界所分割的子串。如果指定了limit,則最多返回limit個子串,如果limit是-1,則意味著沒有限制,可以用來繼續(xù)指

55、定可選參數(shù)flags。函數(shù)例程:參見教材P89,58,4.9 正則表達(dá)式的Web驗(yàn)證應(yīng)用,在本節(jié)中,我們根據(jù)所學(xué)到的正則表達(dá)式來應(yīng)用于校驗(yàn)Web上的用戶輸入信息。,59,4.9.1 電子郵件地址的校驗(yàn),程序代碼如下:,60,4.9.2 多字節(jié)字符的校驗(yàn),程序代碼如下:,61,4.9.3 URL地址的校驗(yàn),程序代碼如下:,62,4.9.4 電話號碼和郵政編碼的校驗(yàn),程序代碼如下:,63,4.10 本 章 小 結(jié),字

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論