一.字符串格式化

整理字符串的第一步是清理字符串中多余的空格。雖然這一部操作不是必需的,但如果要將字符串存入一個文件或數(shù)據(jù)庫中,或者將它和別的字符串進(jìn)行比較,這就是非常有用的。
chop()函數(shù)移除字符串后面多余的空白,包括新行。
ltrim()函數(shù)移除字符串起始處多余空白。
rtrim()函數(shù)移除字符串后面多余的空白,包括新行,此函數(shù)是chop()的別名。
trim()函數(shù)移除字符串兩邊多余的空白。
<?php
echotrim(' PHP ');
?>
PHP具有一系列可供使用的函數(shù)來重新格式化字符串,這些函數(shù)的工作方式是各不相同的。
nl2br()函數(shù)將字符串作為輸入?yún)?shù),用XHTML中的<br/>標(biāo)記代替字符串中的換行符。
<?php
echonl2br("This is a Teacher!\nThis is a Student!");
?>
將特殊字符轉(zhuǎn)換為HTML等價形式,可以使用htmlentities()和htmlspecialchars函數(shù)。如果想要去掉字符串中的HTML去掉,可以使用strip_tags()函數(shù)
<?php
echohtmlentities('<strong>我是吳祁!</strong>'); //轉(zhuǎn)換所有字符
echohtmlspecialchars('<strong>我是吳祁!</strong>') //轉(zhuǎn)換特殊字符
echostrip_tags('<strong>我是吳祁!</strong>') //去掉了<strong>
?>
對于字符串來說,某些字符肯定是有效的,但是當(dāng)將數(shù)據(jù)插入到數(shù)據(jù)庫中的時候可能會引起一些問題,因為數(shù)據(jù)庫會將這些字符解釋成控制符。這些有問題的字符就是引號(單引號和雙引)、反斜杠(\)和NULL字符。
PHP提供了兩個專門用于轉(zhuǎn)義字符串的函數(shù)。在將任何字符串寫到數(shù)據(jù)庫之前,應(yīng)該使用addslashes()將它們重新格式化,
在調(diào)用了addslashes()后,所有的引號都加了斜杠,而stripslashes()函數(shù)去掉了這些斜杠。
<?php
echoaddslashes('This is \a" Teacher! ');
?>
可以重新格式化字符串中的字母大小寫。
strtoupper()函數(shù)將字符串轉(zhuǎn)換為大寫
strtolower()函數(shù)將字符串轉(zhuǎn)換成小寫
ucfirst()函數(shù)將第一個字母轉(zhuǎn)換為大寫
ucwords()函數(shù)將每個單詞第一個字母轉(zhuǎn)換為大寫
<?php
echostrtoupper('yc60.com@gmail.com');
?>
填充字符串函數(shù):str_pad()將字符串用指定個數(shù)的字符填充字符串。
<?php
echostr_pad('Salad',10).'is good.';
?>
二.操作子字符串
通常,我們想查看字符串的各個部分。例如,查看句子中的單詞,或者將一個域名或電子郵件地址分割成一個個的組件部分。PHP提供了幾個字符串函數(shù)來實現(xiàn)此功能。
使用函數(shù)explode()、implode()和join()
為了實現(xiàn)這個功能,我們將使用的第一個函數(shù)是explode()。
使用implode()或join()函數(shù)來實現(xiàn)與函數(shù)explode()相反的效果,這兩個函數(shù)的效果是一致的。
<?php
$email='yc60.com@gmail.com';
$email_array = explode('@',$email);
?>
使用strtok()函數(shù)
strtok()函數(shù)一次只從字符串取出一些片段(稱為令牌)。對于一次從字符串中取出一個單詞的處理來說,strtok()函數(shù)比explode()函數(shù)的效果更好。
<?php
$str="I,will.be#back";
$tok= strtok($str,",.#");
while($tok) {
echo"$tok<br \>";
$tok= strtok(",.#");
}
?>
使用substr()函數(shù)
函數(shù)substr()允許我們訪問一個字符串給定起點和終點的子字符串。這個函數(shù)并不適用于我們的例子中,但是,當(dāng)需要得到某個固定格式字符串中的一部分時,它會非常有用。
<?php
echosubstr("abcdef",1,3);
?>
分解字符串:str_split()返回一個數(shù)組,其中各數(shù)組元素分別是字符串參數(shù)中的一個字符串。
<?php
print_r(str_split('This is aTeacher!'));
?>
逆置字符串:strrev()可以將一個字符串逆反過來。
<?php
echostrrev('This is a Teacher!');
?>
三.字符串比較
到目前為止,我們已經(jīng)用過"= ="號來比較兩個字符串是否相等。使用PHP可以進(jìn)行一些更復(fù)雜的比較。這些比較分為兩類:部分匹配和其他情況。
字符串的排序:strcmp()、strcasecmp()和strnatcmp()
該函數(shù)需要兩個進(jìn)行比較的參數(shù)字符串。如果這兩個字符串相等,該函數(shù)返回0,如果按字典順序str1和str2后面(大于str2)就返回一個正數(shù),如果str1小于str2就返回一個負(fù)數(shù)。這個函數(shù)是區(qū)分大小寫的。
函數(shù)strcasecmp()除了不區(qū)分大小寫之外,其他和strcmp()一樣。
函數(shù)strnatcmp()及與之對應(yīng)的不區(qū)分大小寫的strnatcasecmp()函數(shù)是在PHP4中新增的。這兩個函數(shù)按“自然排序”比較字符串,所謂自然排序是按人們習(xí)慣的順序進(jìn)行排序。
<?php
echostrcmp('a','b');
?>
使用strspn()函數(shù)返回一個字符串中包含有另一個字符串中字符的第一部分的長度。也就是求兩個字符串之間相同的部分。
<?php
echostrspn('gmail','yc60.com@gmail.com');
?>
使用strlen()函數(shù)測試字符串的長度
可以使用函數(shù)strlen()來檢查字符串的長度。如果傳給它一個字符串,這個函數(shù)將返回字符串的長度。例如, strlen("hello")將返回5.
<?php
echostrlen('This is a Teacher!');
?>
確定字符串出現(xiàn)的頻率:substr_count()返回一個字符串在另一個字符串中出現(xiàn)的次數(shù)。
<?php
echosubstr_count('yc60.com@gmail.com','c');
?>
四.查找替換字符串
通常,我們需要檢查一個更長的字符串中是否含有一個特定的子字符串。這種部分匹配通常比測試字符串的完全等價更有用處。
在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr()
函數(shù)strstr()是最常見的,它可以用于在一個較長的字符串專供查找匹配的字符串或字符。請注意,函數(shù)strchr()和strstr()完全一樣。
<?php
echostrstr('yc60.com@gmail.com','@');
?>
函數(shù)strstr()有兩個變體。第一個變體是stristr(),它幾乎和strstr()一樣,其區(qū)別在于不區(qū)分字符大小。對于我們的只能表單應(yīng)用程序來說,這個函數(shù)非常有用,因為用戶可以輸入"delivery"、"Delivery"和"DELIVERY"。
第二個變體是strrchr(),它也幾乎和strstr()一樣,只不過是strstr()的別名。
查找字符串的位置:strpos()、strrpos()。
函數(shù)strpos()和strrpos()的操作和strstr()類似,但它不是返回一個子字符串,而返回子字符串needle在字符串haystack中的位置。更有趣的是,現(xiàn)在的PHP手冊建議使用strpos()函數(shù)代替strstr()函數(shù)來查看一個子字符串在一個字符串中出現(xiàn)的位置,因為前者的運(yùn)行速度更快。
<?php
echostrrpos('yc60.com@gmail.com','c');//位置從第0個開始
?>
替換字符串:str_replace()、str_ireplace()、substr_replace()
<?php
echostr_replace('@','#','yc60.com@gmail.com');//區(qū)分大小寫
echosubstr_replace('yc60.com@gmail.com','###',0,5);//第0個開始取出5個替換為###
?>
五.處理中文字符
對于以上的字符串函數(shù),有些可以用于中文,但有些卻不適用中文。所以,PHP提供了專門的函數(shù)來解決這樣的問題。
中文字符可以是gbk,utf8,gb2312
mb_strlen() 對應(yīng)的函數(shù)為strlen() 求字符串的長度
mb_strlen($string,'utf8');
mb_strstr() 對應(yīng)的函數(shù)為 strstr() 求某字符串到結(jié)尾的字符
mb_strpos() 對應(yīng)的函數(shù)為 strpos() 求出字符最先出現(xiàn)處
mb_strpos($string,'漢',0,'utf8');
mb_substr() 對應(yīng)的函數(shù)為 substr() 取出指定的字符串
mb_substr($string,0,1,'utf8');
mb_substr_count() 對應(yīng)函數(shù)為 substr_str() 返回字符串出現(xiàn)的次數(shù)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:PHP整理筆記七字符串處理-創(chuàng)新互聯(lián)
文章路徑:http://chinadenli.net/article6/cdocig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、定制開發(fā)、網(wǎng)站策劃、Google、小程序開發(fā)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容