原文:PHP 12 :字串的操作

本章介紹字串的操作。
之所以要把字串單獨拿出來講,是因為字串在每種語言裡都是非常重要的。並且也是大家關心的。
我們從以下幾個方面介紹字串:

  1. 字串的表現形式。
  2. 字串的特別之處。
  3. 字串的常用操作。

說點具體的吧。
 1. 字串的表現形式
     在大部分語言裡,雙引號是字串,單引號是字元。但是在PHP裡,字串的表現形式有3種。即:

  • 單引號
  • 雙引號
  • 定界符(heredoc syntax)

看見了吧,單引號居然可以用來表示字串。那麼如果我想表示單引號怎麼辦?和大多數語言一樣,使用轉義符號吧。即反斜線"\".那麼使用單引號和雙引號有什麼區別呢?我的觀點是沒有多大區別。唯一的區別就是雙引號可以應用更多的轉義符。
 讓我們定界符吧。它的語法是"<<<"。用法是在其後提供一個識別符號,然後在識別符號後提供字串,再在字串後提供此識別符號來結尾。例如:

       ?>

注意,這裡的提供的標誌符是EOD,中間的是字串。

2. 字串的特別之處
   從一個例子開始。
   假設裡你有很長的一段字串,比如一段話。幾個月後,你發現你的需求改變,需要在這段話的某個位置插入一個變數。這個時候如果重新用字串符肯定是相當複雜的。那麼有沒有其他的方法呢?請放心,PHP已經考慮到這一點了。那就是花括號的應用。
  對於PHP,它一般
會按照如下規則解析:
     如果遇到美元符號($),解析器會盡可能多地取得後面的字元以組成一個合法的變數名。如果想明示指定名字的結束,用花括號把變數名括起來。例如

       ?> 

看看第3,4行。第三行的$beer's其實是$beer 後加“‘s”。因為這裡的“’”對於變數命名來說是一個無效字元。但是第4行的$beers就不一樣了。所以$beers是無效的。
除了上面的,你還會注意到地5,6行的${beer}以及{$beer}。對於PHP來說它們都是合法的。
但是你必須注意一點,${beer}以及{$beer}的$和{必須是緊挨的。不然{就會當成{字元看待了。

3,字串的常用操作。
 我想這是令我們異常激動的一個話題,並且也是非常實用的。
 字串的函式比較多,我們還是介紹一部分函式吧。

 字串的整理函式

  • chop(),其實就是rtrim().當然rtrim()還是可以用的
  • ltrim(),去掉字串左邊的多於空格。
  • trim(),這個比較比較簡單,就是把字串左右2邊的空格都給刪除。

字串的格式化輸出

  • 實用HTML格式化的。nl2br().即在字串的新一行前插入<br>.
<?php
echo nl2br("foo isn't\n bar");
?> 

上面的字串會分2行顯示,如果把此函式去掉,就只在一行上顯示了。

  • 列印輸出的格式化。

PHP支援print()函式,它和echo一樣,唯一的差別就是print()返回一個整型值,一直為1。除了print(),還有printf()和sprintf(). 寫到這裡,你肯定會想,怎麼和C一樣呢。它們的工作方式一樣,差別是printf()將結果輸出到瀏覽器,而sprintf()這是輸出到變數。

看看它們的定義吧。

int printf ( string format [, mixed args [, mixed ]] )

string sprintf ( string format [, mixed args [, mixed ]] )
  • 改變字串的大小寫。

strtolower將字串變為小寫
strtoupper將字串變為大寫
ucfirst將字串的第一個字元大寫。
ucwords 將字串中的每一個單詞的第一個字元變為大寫。

  • 格式化字元,以便儲存。

其實就是為了替換引號,反斜槓,NULL等,因為它們有的時候不適合於很多場合,比如儲存到資料庫。為了達到目的,addslashes是一個不錯的選擇,它使用反斜線引用字串。為了在顯示資料,需要在之前呼叫stripslashes,否則反斜槓會顯示出來的。

  • 字串比較

strcmp,strcasecmp,strnatcmp,這3個方法都是按字典順序排序例如“2”要大於“12”.

  • 字串長度請呼叫strlen.
  • 字串連線與分割

explode類似於C#裡的Split函式。例如:

      ?> 

implode()和join()提供的功能一樣,正好與explode()相反,它們將多個字元換合併起來。
   strtok()和split類似,但是它一次只取出一個。
  為了取得子字串,呼叫substr()吧。

  • 查詢字串中的字串

可以呼叫strstr(),strchr(),strrchr()以及stristr().記住,strchr()是strstr()的別名,查詢第一次出現的地方。strrchr(),查詢最後一個字串出現的地方。stristr()和strstr()的區別是前者不區分大小寫。

  • 查詢字串的位置可以使用strpos()以及strrpos().
  • 替換的話,呼叫str_replace()以及substr_replace().

以上介紹都是最常用的,如果想得到更多字串的函式以及函式的資訊,參考PHP的函式文件。