處理PHP中字串的常用操作及函式

edithfang發表於2015-01-24
在本文中,列舉了10個PHP中常見的字串處理任務,並給出相應的理想解決方案。



1. 確定一個字串的長度

這是最為常見和基礎的例子,對於確定一個字串的長度,我們應該使用strlen()函式,比如要獲取下面字串$text 的長度:

$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 

4. 解析CSV檔案

資料通常是以逗號分隔的形式儲存在檔案中的(CSV格式),CSV檔案使用一個逗號或者類似於預定義符號,將每列字串組成一個單獨的行。你可能經常建立PHP指令碼來匯入這些資料,或者解析出你所需要的東西,有很多解析CSV檔案的方法,最常見的就是使用fgets()和explode()函式的組合來讀取和解析檔案。但是最為簡單的方法是使用fgetcsv()函式,比如,現在有一個CSV檔案:

1,John,Smith,Plumber 2,Mark,Seagal,Instructor 3,Peter,Haines,Writer

此時使用fopen()和fgetcsv()函式,我們能夠很容易的解析這個檔案,檢索出每個聯絡人的名字:

$fh = fopen("contacts.csv", "r");   
while($line = fgetcsv($fh, 1000, ",")) 
{ 
    echo "Contact: {$line[1]}"; 
} 

5. 將陣列轉換為字串

有些時候,你在建立CSV檔案之後還要從這些檔案中進行讀取,這就意味著你需要將資料轉換為用逗號分隔的字串。如果這些資料最初是從資料庫檢索出來的,那麼它很可能會提供的是一個陣列。這時,你可以使用implode()函式,把陣列元素組合為一個字串。如下所示:

$csv = implode(",", $record); 

6. 將URL轉換成超連結

目前許多WYSIWYG(所見即所得)編輯器工具都允許使用者標記文字,包括超連結。當然,你也可以在內容呈現到頁面上時,自動執行此過程。要轉換成超連結,你可以使用preg_replace()函式,它可以按照正規表示式來搜尋一個字串,並定義了URL的結構:

$url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)";   
$url = preg_replace("/http://([A-z0-9./-]+)/", "$0", $url); 
// $url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)" 
 

7. 從一個字串中去除HTML標籤

我們通常需要確保使用者的輸入中不含有危險字元,因為它們會導致SQL隱碼攻擊或跨站點的指令碼攻擊。PHP已經有了很多安全方面的考慮和功能,這些功能能夠幫助你過濾資料。你的網站可能允許使用者在他們的評論中帶有一些基本的HTML元素,比如一些標籤。此時,你就需要使用帶有檢查功能的函式:strip_tags(),可以從字串中去除所有的HTML標籤。例如:

$text = strip_tags($input, " "); 
 
8. 比較兩個字串

比較兩個字串,檢查它們是否完全相同。比如,判斷使用者第一次設定密碼與第二次確認密碼時輸入的是否完全相同。這時,你可以使用strcmp()函式來實現:

$pswd = "secret"; 
$pswd2 = "secret";   
if (! strcmp($pswd, $pswd2)) 
{ 
   echo "The passwords are not identical!"; 
}

9. 將換行符轉換為換行標籤

使用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);   //引數width: 30為規定的最大行寬度

原文:http://www.phpbuilder.com/columns/Jason_Gilmore060210.php3

(翻譯:PHP100_Zeroing)
來自:PHP100
評論(1)

相關文章