2010年8月20日 星期五

PHP字串處理技巧

今天處理了一些字串問題
如果要替換的字串是英文,可以使用stripos判斷欲替換字串是否在開頭,是的話就用ucfirst給予大寫
搜尋字串時,比較好的作法是用正規表示式,關鍵字preg,P是PCRE的意思
其實mysql也有類似函式,不過兩者所用的delimiter不太一樣,這點要注意

簡略的PHP字串處理函式,引自http://mail.ttes.tcc.edu.tw/~shiuann/myblog/read.php?20
[code]trim();:去頭尾空白。
ltrim();:去頭部空白。
chop();:去尾部空白。
nl2br();將”\n”換行改成

print();同作用同echo,但print是函式,傳回布林值。
printf();格式化字串,傳回整數。
sprintf();格式化字串。 [separator]
轉換規格%[顯示寬度][-][][.小數位數]型別:有-代表向左靠齊,沒-代表向右。
%b:將變數解釋為整數,並以二進位顯示。
%c:將變數解釋為整數,並以字元顯示。
%d:將變數解釋為整數,並以十進位顯示。
%f:將變數解釋為浮點數,並以浮點數顯示。
%o:將變數解釋為整數,並以八進位顯示。
%s:將變數解釋為字串,並以字串顯示。
%x:將變數解釋為整數,並以十六進位顯示,用a-f。
%X:將變數解釋為整數,並以十六進位顯示,用A-F。
AddSlashes();若有反斜時,加上Slash,讓輸入字串若含特殊字元時,加上逸出字元\,以免存入資料庫時衝碼。Q3上引數為變數時,做完此運算立刻存回此變數,導致變數值改變;較新的版本,引數為變數時,做完此運算不會導致變數值改變。
StripSlashes();若有反斜時,去掉Slash,使資料庫取出資料還原。Q3上引數為變數時,做完此運算立刻存回此變數,導致變數值改變;較新的版本,引數為變數時,做完此運算不會導致變數值改變。
strtoupper();轉大寫。
strtolower();轉小寫。
ucfirst();字串首轉大寫。
ucwords();字串中每個Word的字首轉大寫。
strtok(字串,”分隔字元”);:擷取字串的前面到分字元為止。
substr(字串,開始字元,長度);:擷取子字串,第一字元算0;開始字元為負,為字串尾減該數,即字尾算1倒數該數之字元。長度省略則取到字尾;長度為負則取到字尾倒數該數之字元。
strcmp(字串一,字串二);:比較兩字串,相等為0,正為字串一ASC碼大,負數為字串二ASC碼大。
strcasecmp(字串一,字串二);:同上,但不分大小寫。
strlen();:字串長度。
strstr(字串,欲找之子字串);:找到傳回子字串「第一次」出現以後之剩餘字串,找不到傳回「假」。
strchr(字串,欲找之子字串);:同上。
stristr(字串,欲找之子字串);:同上,但不分大小寫。
strrchr(字串,欲找之子字串);:找到傳回子字串「最後一次」出現以後之剩餘字串,找不到傳回「假」。
strpos(字串,欲找之子字串,指定蒐尋之起始位置);:找到傳回子字串「第一次」出現的位置,找不到傳回「假」。字串首位置算0,省略蒐尋起點時,從字串首開始找。但是「假」傳回值是0,字首位置傳回值也是0,會混淆。可以用if(傳回值===fasle)測,如果成立傳回值代表「假」,如果不成立傳回值代表位置0。
strrpos(字串,欲找之子字串,指定蒐尋之起始位置);:找到傳回「子字串字首字元」「最後一次」出現的位置,找不到傳回「假」。字串首位置算0,省略蒐尋起點時,從字串首開始找。
str_replace(蒐尋字串,代換字串,字串堆);:在字串堆中找到「蒐尋字串」並用「代換字串」換掉它們。
substr_replace(字串堆,代換字串,起點,長度);:在字串堆指定的起點及長度,用代換字串換掉它們。起點為0或正,由字串堆頭起算;起點為負,由字串堆尾起算。長度未指定,則換到字串堆尾;長度為0,則插入原字串;長度為正,則取代幾個字串數;長度為負,則自尾端開如取代,停於長度。 [/code]

沒有留言: