PHP字串操作函數集
字串的整理:chop(),ltrim()和trim()
整理字串的第一步是清理字串中多餘的空格.
預設情況下,除去的字元是分行符號和斷行符號符(n和r),水平和垂直定位字元(t和 x0B),字串結束符(0)和空格.除了這個預設的過濾字元列表外,還可以在該函數的第二個參數中提供要過濾的特殊字元.
這三個函數不同之處是:trim()將除去字串前後的空格,而ltrim()只從字串的開始處(左邊)除去空格.rtrim()是從字元穿的結束處除去空格.
格式化字串以便顯示
1,使用HTML格式化:nl2br()函數
nl2br()函數將字串作為輸入參數,用XHTML中的
標記代替字串中的分行符號.
2,為列印輸出而格式化字串
PHP也支援print()結構,他實現的功能與echo相同.
printf()函數是將一個格式化的字串輸出到瀏覽器中,而sprintf()函數是返回一個格式化了的字串.
見下面:
printf (”total amount of order is %s.”,$total);
格式化字串中的%s是轉換說明.它的意思是”用一個字串來代替”.
如果想列印一個”%”符號,必須使用”%%”.
再看一個例子:
printf(”total amount of order is %.2f(with shipping %.2f)”, $total, $total_shipping);
轉換說明的類型碼
b 解釋為整數並作為位元輸出.
c 解釋為整數並作為字元輸出.
d 解釋為整數並作為小數輸出.
f 解釋為雙精確度並作為浮點數輸出
o 解釋為整數並作為八進位輸出
s 解釋為字串並作為字串輸出
u 解釋為整數並作為非指定小數輸出
x 解釋為整數並作為帶有小寫字母a-f的十六進位數輸出
X 解釋為整數並作為帶有大寫字母A-F的十六進位數輸出
3,改變字串中的字母大小寫
strtoupper() 將字串轉換為大寫
strtolower() 將字串轉換為小寫
ucfirst() 如果字串的第一個字元是字母,就將該字元轉換為大寫
ucwords() 將字串每個單詞的第一個字母轉換為大寫
格式化字串以便儲存:addslashes(), stripslashes()
存到資料庫裡的資料,有些可能會被解釋成控制符號,這些有問題的字元就是:引號(單引和雙引),反斜線()和NULL字元.
為了將這些字元進行轉義處理,可以在他們前面加一個反斜線.
儲存資料時,先用addslashes()處理字串,加上反斜線.在顯示使用者資料之前,必須用stripslashes()去掉引號特性.
PHP配置也可以自動啟動魔術引號特性,這個功能是由magic_quotes_gpc指令控制的.
用字串函數串連和分割字串
使用函數explode(),implode()和join()
如:
$email_array=explode(’@',$email);
這裡將顧客的電子郵件分割成兩部分。並存放在$email_array[0]和$email_array[1].
然而,這個函數不能分割大寫字母的字串.所以處理之前應該先轉換成小寫.
使用implode()和join()函數可以實現與explode(0相反的效果.這兩個函數效果一樣.
使用strtok()函數
與explode()每次都將一個字串全部分割成若干小塊不同,strtok()函數一次只從字串中取出一些片段(成為令牌).對於一次從字串中取出一個單詞的處理來說,strtok()效果更好.
使用substr()函數
函數substr()允許我們訪問一個字串給定起點和終點的字串.
如:
$test=’your customer service is excellent’;
substr($test,1);
將返回:”our customer service is excellent”
substr($test,-9);
將返回:”excellent”
這個函數的第3個參數可以限制返回的字元大小:
substr($test, 5, -13);
將返回:”customer service”
字串的比較
字串的排序:strcmp() , strcasecmp() , 和 strnatcmp()
函數原型:
int strcmp(string str1, string str2);
該函數需要兩個進行比較的參數字串.如果這兩個字串相等,該函數返回0,如果按字典順序str1在str2後面(大於str2)就返回一個正數.否則返回一個負數. 這個函數是區分大小寫.
函數strcasecmp()除了不區分大小寫之外,其他和strcmp()一樣.
函數strnatcmp()以及與之對應的不區分大小寫strnatcasecmp()函數是按”自然排序”比較字串的.
所謂”自然排序”是按人們習慣的順序,如:strcmp()會認為2大於12,因為按字典順序2大於12.然而,strnatcmp()則是相反.
使用strlen()函數測試字串的長度
使用字串函數匹配和替換子字串
在字串中尋找字串:strstr(), strchr() ,strrchr() ,和stristr().
如:
if (strstr($feedback,’shop’))
$toaddress=’shop@example.com’;
else if (strstr($feedback,’delivery’))
$toaddress=’delivery@example.com’;
函數strstr有兩個變體, 一個是stristr(),區別在於他不區分大小寫.地二個是strrchr(),他幾乎和strstr()一樣,但是strstr是從第一個出現 needle的位置的前面返回字串,而strrchr()是從最後一個needle的位置返回.
尋找子字串的位置:strpos() ,strrpos()
如下面的代碼,會在瀏覽器中顯示數值4:
$test=’hello world’;
echo strpos($test,’o');
再如echo strpos($test,’o',5);
會返回7,因為第三個參數說明了在位置5開始搜尋.
strrpos()也幾乎是一樣的,但是他返回的是從最後一次出項子字串needle的位置.
替換子字串:str_replace(), substr_replace()
最常用的是str_replace(),它的原型是:
mixed str_replace(mixed needle,mixed new_needle, mixed haystack [,int &count]));
這個函數用new_needle替換所有haystack中的needle,並且返回haystack替換後的結果.可選的第四個參數是count,它包含要執行的替換操作次數.
例如過濾”感情色彩”單詞的語句:
$feedback= str_replace($offcolor,’%!@’,$feedback);
substr_replace的原型:
string substr_replace(string string,string replacement,int start , int[length]);
這個函數使用字串replacement替換字串string中的一部分.具體是哪一部分則取決於起始位置和選擇性參數lengeh的值.
$test=substr_replace($test,’x',-1);
這段代碼會用’x'替換$test的最後一個字元.