字串都是小菜了,下面我總結一些常用的處理字串函數。
1.確定一個字串的長度
這是文章中最明顯的一個例子,其中的問題是我們如何來確定一個字串的長度,這裡我們不能不提的就是strlen()函數:
$text = "sunny day";
$count = strlen($text);
// $count = 9
2.截取文本,建立一個摘要
新聞性質的網站通常會截取一個大約200字左右的段落,並在次段落的末尾加上省略符號來形成一個摘要,這時,你可以使用substr_replace()函數來實現此功能。由於篇幅的原因,這裡只示範對40個字元的限制:
$article = "BREAKING NEWS:
In ultimate irony, man bites dog.";
$summary = substr_replace($article, "…", 40);
// $summary = "BREAKING NEWS:
In ultimate irony, man bi…"
3.計算字串中的字元和單詞數
相信您經常會看到一些部落格或者新聞類文章,來總結文章的總字數,或者我們也經常看到一些投稿的要求:在一定的字數範圍內。這時,你可以使用str_word_count()函數來計算文章字數的總和:
$article = "BREAKING NEWS:
In ultimate irony, man bites dog.";
$wordCount = str_word_count($article);
// $wordCount = 8
有的時候你需要更加嚴格的控制投稿者的使用空間,例如一些批註等等。如果你想知道有多少個字元來組成一個數組,請使用count_chars()函數。
4.解析CSV檔案
資料通常是以逗號分隔的形式儲存在檔案中的(如一個已知的CSV檔案),CSV檔案使用一個逗號或者類似於預定義符號,將每列字串組成一個單獨的行。你可能經常建立PHP指令碼來匯入這些資料,或者解析出你所需要的東西,這些年來,我也看到過很多解析CSV檔案的方法,最常見的就是使用fgets()和explode()函數的組合來讀取和解析檔案,然而,最簡單的方法是使用一個函數來解決問題,但它並不屬於PHP的字串處理庫裡的一部分:fgetcsv()函數。使用fopen()和fgetcsv()函數,我們能夠很容易的解析這個檔案,同時檢索出每個連絡人的名字:
$fh = fopen("contacts.csv", "r");
while($line = fgetcsv($fh, 1000, ","))
{ echo "Contact: {$line[1]}";
}
5.轉換成一個字串數組
某些時候,你可能需要建立CSV檔案,同時又在這些檔案中進行讀取,這就意味著你需要將那些同逗號分隔的字串轉換成資料。如果這些資料最初是從資料庫檢索出的,那麼它很可能會只給您提供一個數組。這時,您可以使用implode()函數,將這些字串轉換成一個數組:
$csv = implode(",", $record);
6.將網址轉換成超連結
目前許多WYSIWYG編輯器提供的工具列,都允許使用者標記文本,包括超連結。但是,當內容呈現到頁面上時,你可以很容易的自動執行此過程,同時保證您不出現額外的錯誤。要轉換成超連結的URL,你可以使用preg_replace()函數,它可以按照Regex來搜尋一個字串,並定義了URL的結構:
$url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)";
$url = preg_replace("//([A-z0-9./-]+)/", "$0", $url);
// $url = "W.J. Gilmore, LLC "
7.從一個字串中去除HTML標籤
作為Web開發人員,其中的一個主要工作就是要確保使用者輸入中不含有危險字元,如果有,這會導致SQL注入或指令碼攻擊。PHP語言中包含了很多安全方面的功能,這些功能能夠協助你過濾資料,包括延長過濾器。例如,你可以允許使用者中帶有一些基本的HTML語句,包括一些注釋。實現這個功能,你可以使用帶有檢查功能函數:strip_tags()。它在預設的情況下是從字串中刪除所有的HTML標籤,但同時也允許覆蓋預設或者你指定的標籤。例如,在下面的例子中,你可以除去所有的標籤:
$text = strip_tags($input, " ");
8.比較兩個字串
比較兩個字串,以確保它們是相同的。例如,判斷使用者第一次與第二次輸入的密碼是否相同,你可以使用substr_compare()函數來很容易的現實:
$pswd = "secret";
$pswd2 = "secret";
if
(! strcmp($pswd, $pswd2))
{ echo "The passwords are not identical!";
}
如果你想判斷兩個字串不區分大小寫,可以使用strcasecmp()函數。
9.轉換分行符號
在本文中我介紹了如何輕鬆轉換成超超連結的URL,現在介紹nl2br()函數,這個函數能夠協助你將任何分行符號轉換成HTML標籤。
$comment = nl2br($comment);
10.應用自動換行
應用自動換行,你可以使用PHP中的這個函數:wordwrap():
$speech = "Four score and seven years ago our fathers brought forth,
upon this continent, a new nation,
conceived in Liberty,
and dedicated to the proposition that all men are created equal.";
echo wordwrap($speech, 30);
執行上面的代碼,結果是:
Four score and seven years ago our fathers brought forth, upon this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.
1.拼接字串
拼接字串是最常用到的字串操作之一,在PHP中支援三種方式對字串進行拼接操作,分別是圓點.分隔字元{}操作,還有圓點等號。=來進行操作,圓點等號可以把一個比較長的字串分解為幾行進行定義,這樣做是比較有好處的。
2.替換字串
在PHP這門語言中,提供了一個名字叫做substr_replace()的函數,該函數的作用可以快速的完成掃描和編輯常值內容較多的字串替換功能。他的文法格式:mixed substr_replace(mixed $string,string $replacement,int $start,[int $length])
3.計算字串
計算字串的長度:在PHP中,strlen()函數用來計算字串的長度並且返回該字串的長度資訊。該文法的格式如下:int strlen(string $string)格式裡面的string就是用來指定要計算長度的字串。
計算字串的數目:在PHP中,substr_count()函數,可以用來非常方便而且準確的確定一個指定的子字串在所提供的字串中有多少個,substr_count()函數的文法格式如下:int substr_count(string $haystack,string $needle[,int $offset=0[,int $length]])在上面的文法中設計的參數的說明如下:haystack指定要檢查的字串,needle用來指定要插入的字串,offset用來指定在字串中何處開始搜尋,預設值為0,length用來指定搜尋的長度。
在PHP中,str_word_count()函數,可以用來非常方便而且準確的確定一個某一個單詞在所提供的字串中有多少個,str_word_count()函數的文法格式如下:mixed str_word_count(string $string[,int $format=0[,string $charlist]])在上面的文法中涉及到的參數的說明如下:string用來指定要進行檢查的字串,format用來指定str_word_count()函數的傳回值,這個參數的傳回值可以返回三個值,分別是0,1,2。其中返回0的意思是預設值,返回找到的單詞的數目,如果傳回值為1的話,那麼str_word_count()返回的就是一個數組,其中的鍵名是從0開始的連續整數,值是實際的單詞。如果format的值取3的時候,那麼str_word_count()函數的傳回值就是一個數組,其中,數組的鍵名是單詞在字串中的位置,值是實際的單詞。
4.尋找字串
字串的尋找可以分為很多種,比如說尋找子字串,尋找某個字串的位置等等,PHP分別為每個字串尋找操作提供了相應的函數。
尋找子字串:在PHP語言中,strstr()函數可以用來尋找子字串,該函數返回的結果為子字串第一次出現的所有的內容,strstr()函數的格式如下:string strstr(string $haystack,mixed $needle)在上面的文法中,涉及到的參數的說明如下haystack:指定被搜尋的字串,needle指定所要搜尋的字串,如果該參數是數位話,則會匹配器該數字ASCII值的字元。在實際的應用當中,會出現要忽略字母大小寫情況,這個時候,可以使用PHP提供的一個大小寫不敏感的尋找函數--stristr()函數,該函數的使用方法和strstr()函數的使用是一樣的。
尋找字串的位置:strpos()函數的功能和strstr()函數是類似的,只是返回的不是字串,而是一個字串在另外一個字串當中第一次出現的位置,strpos()的文法格式如下:int strpos(string $haystack,mixed $needle[,int $offset =0])在上面的文法中涉及到的參數的說明如下:haystack是要被搜尋的字串,needle指定要進行尋找的字串,offset是指定開始搜尋的位置,預設值為0。
strpos()函數是一個對大小寫敏感的尋找函數,但是在實際的應用過程當中往往會出現需要忽略大小寫,這個時候可以使用PHP提供的一個對大小寫不是很敏感的尋找函數stripos(),該函數的使用方法和strpos()是一樣的。
5.比較字串
在PHP語言中,比較兩個字串的大小可以通過兩種方式來實現:使用"=="操作符比較和使用函數進行比較
使用"=="操作符比較兩個字串的大小:在PHP中比較兩個字串的時候,最容易的方法就是使用雙等號操作符(==)。
使用函數比較字串的大小:在PHP中提供的strcmp()函數可以更加精確的比較兩個字串的大小,文法格式如下int strcmp(string $str1,string $str2)在上述文法中涉及到的參數的說明如下:str1 指定要進行比較的字串1,str2指定要進行比較的字串2。這個strcmp諳熟可以確保兩個字串是否完全符合,並將比較結果以整數的形式返回,這個函數的傳回值有以下三種。0:兩個字串是相等的,小於0的時候,第一個字串是小於後面的字串的,如果傳回值是大於零的,那麼就說明,前面的字串是大於後面的字串的。
除了strcmp()函數之外,PHP還提供了另外一些比較類似的比較函數,比如strncmp()函數可以選擇想要比較的字串的長度(字元個數),其文法格式如下:int strcmp(string $str1,string $str2,int $len)上面的參數說明 str1:指定要比較的第一個字串,str2:指定要比較的第二個字串len:指定每個字串用於比較的字元個數。
在比較字串的時候,有的時候需要忽略大小寫,就可以使用strcasemp()函數和strncasemp()函數,這兩個函數與區分大小寫相應函數的使用方法是完全相同的,strcasecmp()函數和strncasecmp()兩個函數的文法格式分別如下:
int strcasecmp(string $str1,string $str2)
int strncasecmp(string $str1,string $str2,int $len)
6.複製字串
如果需要重複n次顯示一個字元或者一個字串的功能,則最簡單的實現方法就是調用複製函數,在PHP中可以使用str_repeat()函數實現字串的複製,這個函數的文法格式如下:string str_repeat(string $input,int $multiplier)在上述的文法中設計的參數的說明如下input指定要重複的字串,multiplier指定字串將被重複的次數。
7.翻轉字串
處理字串的操作還包括對字串進行翻轉在PHP語言中,使用strrev()函數可以實現反轉字串的功能,strrev()函數的文法格式為 string strrev(string $string)
上面的參數string就是用於指定要進行翻轉的字串。
8.切分,合并字串
把一個字串按照某種規則切分成多個字串,或者把多個字串合并成一個長的字串,是在處理字串操作的時候會經常碰到的問題。使用PHP提供的explode()函數,str_split()函數,implode()函數可以處理類似切分,合并字串的問題。
切分字串:explode()函數的功能就是用指定的分隔字元把字串切分成數組,explode()函數的文法格式如下:array explode(string $delimiter,string $string[,int $limit])在上面的文法中涉及到的參數的說明如下:delimiter:指定在哪裡分隔字串,string:指定要進行分割的字串,limit:指定所返回的數組元素的最大數目,最後的子塊將會包含string的剩餘部分。
str_split()函數的作用是能夠將一個字串分割成等長度的多個子字串。str_split()函數的文法格式如下:array str_split(string $string[,int $split_length=1])上面的文法中的參數說明如下:string:指定要分割的字串,split_length:指定每個數組元素的長度,預設值為"1"。
合并字串:implode()函數的功能是將數組的元素串連起來成為字串,implode()函數的文法格式如下:string implode([string $glue],array $pieces)在上述的文法中涉及到的參數的說明如下:glue()指定數組元素之間放置的內容,預設值為""(表示空白字元串)pieces指定要合并為字串的數組。調用implode()函數可以根據參數所限制的條件擷取一個新的字串,達到合并字串的目的。
join()是implode()函數的別名,兩個函數的用法是完全一樣的,需要強調的是,雖然參數glue是可以選的,但是為了使程式擁有更好的相容性,推薦使用兩個參數
總結一下字串的相關操作方法:
1.printf()函數:可以對字串進行格式化操作
2.sprintf()函數:可以對字串進行格式化操作,與printf()函數的區別就是需要使用echo才能將格式化後的字串顯示輸出。
3.nl2br()函數:可以將字串中的分行符號"n"轉換為HTML中的"
"後顯示出來。
4.wordwrap()函數:指定從某列字元進行強制換行
5.strtolower()函數:該函數實現的功能是將字串中的所有的字元全部轉換為小寫字元
6.strtoupper()函數:該函數的作用就是將字串中的所有的字元全部轉換為大寫的字元
7.ucwords()函數:該函數的作用就是將字串中所有的首字元全部轉換為大寫字元
8.substr_replace()函數:可以快速完成掃描並且編輯常值內容較多的字串的功能
9.strlen()函數:可以計算字串的長度並且返回該字串的長度
10.substr_count()函數:可以確定一個字串在所提供的字串中有多少個
11.str_word_count()函數,可以確定一個字串中某個單詞的出現次數。
12.strstr()函數,可以用來尋找子字串,該函數的返回結果為子字串第一次出現後的所有內容
13.strpos()函數,功能和strstr()函數是類似的,只是返回的不是字串,而是一個字串在另一個字串中第一次出現的位置。
14.strcmp()函數,該函數的功能可以精確的比較兩個字串的大小
15.strncmp()函數,可以選擇要比較的字串的長度(字元個數)
16.strcasecmp()函數,可以在忽略大小寫時候,對兩個字串進行比較
17.strncasecmp()函數,可以在忽略大小寫前提下,對兩個字串時候進行長度或者字元數目的比較。
18.str_repeat()函數,重複n次顯示一個字元或者字串的功能
19.strrev()函數,提供對字串進行翻轉的操作
20.explode()函數,提供了將某個字串切分為多個字串的功能,指定分隔字元吧字串切分成數組。
21.str_split()函數,能夠將一個字串分割成等長度的多個子字串
22.implode()函數,將數組的元素串連起來成為字串
23.join()函數,使用方法與implode()函數是一摸一樣的,它的作用也是將數組元素串連起來成為一個字串