- PHP+MySQL動(dòng)態(tài)網(wǎng)站開發(fā)從入門到精通(視頻教學(xué)版)
- 張工廠
- 2719字
- 2021-01-08 17:30:27
5.3 字符串的基本操作
字符串的基本操作主要包括對字符串的格式化處理、連接切分字符串、查找字符串、替換字符串等。
5.3.1 手動(dòng)和自動(dòng)轉(zhuǎn)義字符串中的字符
手動(dòng)轉(zhuǎn)義字符串?dāng)?shù)據(jù),就是在引號內(nèi)(包括單引號和雙引號)通過“\”反斜杠使一些特殊字符轉(zhuǎn)義為普通字符。在介紹單引號和雙引號的時(shí)候已經(jīng)對這個(gè)方法進(jìn)行了詳細(xì)的描述。
自動(dòng)轉(zhuǎn)義字符串的字符,是通過PHP的內(nèi)置函數(shù)addslashes()來完成的。還原這個(gè)操作則是通過stripslashes()來完成的。以上兩個(gè)函數(shù),也經(jīng)常使用在格式化字符串中以用于MySQL的數(shù)據(jù)庫存儲(chǔ)。
5.3.2 計(jì)算字符串的長度
計(jì)算字符串的長度經(jīng)常在很多應(yīng)用中出現(xiàn),比如輸入框輸入文字的長度等,都會(huì)用到此功能。使用strlen()函數(shù)就可以實(shí)現(xiàn)這個(gè)功能。以下實(shí)例介紹計(jì)算字符串長度的方法和技巧。
【例5.4】(實(shí)例文件:ch05\5.4.php)
<? php $someinput = "這個(gè)字符串的長度不長。length is not long."; //定義字符串變量 $length = strlen($someinput); //獲取字符串變量的長度 if(strlen($someinput)>50){ echo "輸入的字符串的長度不能大于50個(gè)字符。"; }else{ echo "允許輸入字符串的長度,此字符串長度為$length"; } ?>
運(yùn)行結(jié)果如圖5-4所示。

圖5-4 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中$someinput為一個(gè)字符串變量。strlen($someinput)則直接調(diào)用strlen()函數(shù)計(jì)算出字符串的長度。
(2)在if語句中strlen($someinput)返回字符串長度并與50這一上限作比較。由于$someinput中有中文和英文兩種字符,它的長度為41,正如輸出所示。
(3)由于每個(gè)中文字占兩個(gè)字符位,每個(gè)英文字符占一個(gè)字符位,字符串內(nèi)的每個(gè)空格也算一個(gè)字符位,所以,最后字符串的長度為41個(gè)字符。
5.3.3 字符串單詞統(tǒng)計(jì)
有時(shí)對字符串的單詞進(jìn)行統(tǒng)計(jì)有更大意義。使用str_word_count()函數(shù)可以實(shí)現(xiàn)此操作,但是這個(gè)函數(shù)只對基于ASCII碼的英文單詞起作用,并不對UTF8的中文字符起作用。
下面通過實(shí)例介紹字符串單詞統(tǒng)計(jì)中的應(yīng)用和技巧。
【例5.5】(實(shí)例文件:ch05\7.php)
<? php $someinput = "How many words in this sentance? Just count it."; //定義 字符串變量 $someinput2 = "這個(gè)句子由多少個(gè)漢字組成?數(shù)一數(shù)也不知道。"; echo str_word_count($someinput)."<br />"; //計(jì)算單詞個(gè)數(shù) echo str_word_count($someinput2); ?>
運(yùn)行結(jié)果如圖5-5所示。可見str_word_count()函數(shù)無法計(jì)算中文字符,查詢結(jié)果為0。

圖5-5 程序運(yùn)行結(jié)果
5.3.4 清理字符串中的空格
空格在很多情況下是不必要的,所以清除字符串中的空格顯得十分重要。比如在判定輸入是否正確的程序中,出現(xiàn)了不必要的空格,將增大程序出現(xiàn)錯(cuò)誤判斷的機(jī)率。
清除空格要用到ltrim()、rtrim()和trim()函數(shù)。其中l(wèi)trim()是從左面清除字符串頭部的空格。rtrim()是從右面清除字符串尾部的空格。trim()則是從字符串兩邊同時(shí)去除頭部和尾部的空格。
以下實(shí)例介紹去除字符串中空格的方法和技巧。
【例5.6】(實(shí)例文件:ch05\5.6.php)
<? php $someinput = " 這個(gè)字符串的空格有待處理。"; //定義字符串變量 echo "Output:".ltrim($someinput)."End <br />"; //清理字符串頭部的空格 echo "Output:".rtrim($someinput)."End <br />"; //清理字符串頭部尾部的空格 echo "Output:".trim($someinput)."End <br />"; //同時(shí)去除頭部和尾部的空格 $someinput2 = " 這個(gè)字符串 的 空格有待處理。"; //定義中間有空格的字符串變量 echo "Output:".trim($someinput2)."End"; //同時(shí)去除頭部和尾部的空格 ?>
運(yùn)行結(jié)果如圖5-6所示。

圖5-6 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中,$someinput為一個(gè)兩端都有空格的字符串變量。ltrim($someinput)從左邊去除空格,rtrim($someinput)從右面去除空格,trim($someinput)從兩邊同時(shí)去除,得到輸出如圖5-6所示。
(2)其中$someinput2為一個(gè)兩端都有空格,并且中間也有空格的字符串變量。用trim($someinput2)處理,但還只是去除兩邊的空格。
5.3.5 字符串的切分與組合
字符串的切分使用explode()和strtok()函數(shù)。切分的反向操作為組合,使用implode()和join()函數(shù)。其中explode()把字符串切分成不同部分后,存入一個(gè)數(shù)組。Impolde()函數(shù)則是把數(shù)組中的元素按照一定的間隔標(biāo)準(zhǔn)組合成一個(gè)字符串。
以下實(shí)例介紹去除字符串切分和組合的方法和技巧。
【例5.7】(實(shí)例文件:ch05\5.7.php)
<? php $someinput = "How_to_split_this_sentance."; //定義字符串變量 $someinput2 = "把 這個(gè)句子 按空格 拆分。"; //定義按空格拆分的字符串 $a = explode('_', $someinput); //切分字符串someinput print_r($a); //輸出切分后的字符串 $b = explode(' ', $someinput2); print_r($b); echo implode('>', $a)."<br />"; //組合字符串$a echo implode('*', $b); ?>
運(yùn)行結(jié)果如圖5-7所示。

圖5-7 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中explode()函數(shù)把$someinput和$someinput2按照下劃線和空格的位置把它們分別切分成$a和$b兩個(gè)數(shù)組。
(2)其中implode()函數(shù)把$a和$b兩個(gè)數(shù)組的元素分別按照“>”和“*”為間隔組合成新的字符串。
5.3.6 字符串子串的截取
在一個(gè)字符串中截取一個(gè)子串,就是字符串截取。
完成這個(gè)操作需要用到substr()函數(shù)。這個(gè)函數(shù)有3個(gè)參數(shù),分別規(guī)定了目標(biāo)字符串、起始位置和截取長度。它的格式如下:
substr(目標(biāo)字符串,起始位置,截取長度)
其中目標(biāo)字符串是某個(gè)字符串變量的變量名,起始位置和截取長度都是整數(shù)。
如果都是正數(shù),起始位置的整數(shù)必須小于截取長度的整數(shù),否則函數(shù)返回值為假。
如果截取長度為負(fù)數(shù),則意味著,是從起始位置開始往后除去從目標(biāo)字符串結(jié)尾算起的長度數(shù)的字符以外的所有字符。
以下實(shí)例介紹去除字符串截取的方法和技巧。
【例5.8】(實(shí)例文件:ch05\5.8.php)
<? php $someinput = "create a substring of this string."; //定義字符串變量$someinput $someinput2 = "創(chuàng)建一個(gè)這個(gè)字符串的子串。"; echo substr($someinput,0,11)."<br />"; //截取字符串前11個(gè)字符 echo substr($someinput,1,15)."<br />"; //截取從第二個(gè)字符開始的前15個(gè)字 符 echo substr($someinput,0, -2)."<br />"; //截取除最右側(cè)兩個(gè)字符外的字符 echo substr($someinput2,0,12)."<br />"; //截取字符串前12個(gè)字符 echo substr($someinput2,0,10)."<br />"; //截取字符串前10個(gè)字符 echo substr($someinput2,0,11); //截取字符串前11個(gè)字符 ?>
運(yùn)行結(jié)果如圖5-8所示。

圖5-8 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中$someinput為英文字符串變量。substr($someinput,0,11)和substr($someinput,1,15)展示了起始位和截取長度。substr($someinput,0, -2)則是從字符串開頭算起,除了最后兩個(gè)字符,其他字符都截取的子字符串。
(2)其中$someinput2為中文字符串變量。因?yàn)橹形淖址侨亲址颊純蓚€(gè)字符位,所以截取長度一定要是偶數(shù)。如果是單數(shù)則在此字符位上的漢字將不被輸出。如果在這樣截取長度為單數(shù)的字符串子串后連接其他字符串輸出,會(huì)出現(xiàn)輸出錯(cuò)誤。所以,要小心使用。
5.3.7 字符串子串替換
在某個(gè)字符串中替換其中的某個(gè)部分是重要的應(yīng)用,就像在使用文本編輯器中的替換功能一樣。
完成這個(gè)操作需要使用substr_replace()函數(shù),它的格式為:
substr_replace(目標(biāo)字符串,替換字符串,起始位置,替換長度)
以下實(shí)例介紹字符串替換的方法和技巧。
【例5.9】(實(shí)例文件:ch05\5.9.php)
<? php $someinput = "ID:125846843388648"; //定義字符串變量 echo substr_replace($someinput, "************",3,11)."<br />"; //字符串字串 替換 echo substr_replace($someinput, "尾號為",3,11); //輸出替換后的字符串 ?>
運(yùn)行結(jié)果如圖5-9所示。

圖5-9 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中,$someinput為英文字符串變量。從第三個(gè)字符開始為ID號。第一個(gè)輸出是以“************”替換第三個(gè)字符開始往后的11個(gè)字符。
(2)第二個(gè)輸出是用“尾號為”替代第三個(gè)字符開始往后的11個(gè)字符。
5.3.8 字符串查找
在一個(gè)字符串中查找另外一個(gè)字符串,就像文本編輯器中的查找一樣。實(shí)現(xiàn)這個(gè)操作需要用到strstr()或stristr()函數(shù)。其格式為:
strstr(目標(biāo)字符串,需查找字符串)
如果函數(shù)找到需要查找的字符或字符串,則返回從第一個(gè)查找到字符串的位置往后所有的字符串內(nèi)容。
stristr()函數(shù)為不敏感查找,也就是對字符的大小寫不敏感。用法與strstr()相同。
以下實(shí)例介紹字符串查找的方法和技巧。
【例5.10】(實(shí)例文件:ch05\5.10.php)
<? php $someinput = "I have a Dream that to find a string with a dream."; //定義英 文字符串 $someinput2 = "我有一個(gè)夢想,能夠找到理想。"; //定義中文字符串 echo strstr($someinput, "dream")."<br />"; //查找指定的字符 串 echo stristr($someinput, "dream")."<br />"; echo strstr($someinput, "that")."<br />"; echo strstr($someinput2, "夢想")."<br />"; ?>
運(yùn)行結(jié)果如圖5-10所示。

圖5-10 程序運(yùn)行結(jié)果
【案例分析】:
(1)其中$someinput為英文字符串變量。strstr($someinput, "dream")大小寫敏感,所以輸出字符串最后的字符。stristr($someinput, "dream")大小寫不敏感,所以直接在第一個(gè)大寫的匹配字符就開始輸出。
(2)其中$someinput2為中文字符串變量。strstr()函數(shù)同樣對中文字符起作用。
5.3.9 大小寫轉(zhuǎn)換
在PHP中,通過使用大小寫轉(zhuǎn)換函數(shù),可以修改字符串中字母大小不規(guī)范的問題。常見的大小寫轉(zhuǎn)換函數(shù)如下:
srting strtolower(srting str); //轉(zhuǎn)換為小寫 srting strtoupper(srting str); //轉(zhuǎn)換為大寫 srting ucfirst(srting str); //整個(gè)字符串首字母大寫 srting ucwords(srting str); //整個(gè)字符串中以空格為分隔符的單詞首字母大寫
【例5.11】(實(shí)例文件:ch05\5.11.php)
<? php $str = "hello I have a dream" ; //定義英文字符串 echo strtolower($str)."<br />"; //轉(zhuǎn)換為小寫 echo strtoupper($str)."<br />"; //轉(zhuǎn)換為大寫 echo ucfirst($str)."<br />"; //整個(gè)字符串首字母大寫 echo ucwords($str)."<br />"; //整個(gè)字符串中以空格為分隔符的單詞首字母大寫 echo $aa; //輸出原字符串 ?>
運(yùn)行結(jié)果如圖5-11所示。

圖5-11 程序運(yùn)行結(jié)果
- 演進(jìn)式架構(gòu)(原書第2版)
- Functional Python Programming
- arc42 by Example
- Learn React with TypeScript 3
- JavaScript入門經(jīng)典
- VMware虛擬化技術(shù)
- Microsoft Dynamics AX 2012 R3 Financial Management
- Modernizing Legacy Applications in PHP
- jQuery從入門到精通(微課精編版)
- Spring Boot從入門到實(shí)戰(zhàn)
- Python編程基礎(chǔ)與數(shù)據(jù)分析
- Responsive Web Design with HTML5 and CSS3(Second Edition)
- Real-time Web Application Development using Vert.x 2.0
- 小學(xué)生C++編程課堂(新手篇)
- MATLAB/Simulink與過程控制系統(tǒng)仿真