天天看點

PHP 12 :字元串的操作

本章介紹字元串的操作。

之是以要把字元串單獨拿出來講,是因為字元串在每種語言裡都是非常重要的。并且也是大家關心的。

我們從以下幾個方面介紹字元串:

字元串的表現形式。

字元串的特别之處。

字元串的常用操作。

說點具體的吧。

 1. 字元串的表現形式

     在大部分語言裡,雙引号是字元串,單引号是字元。但是在PHP裡,字元串的表現形式有3種。即:

單引号

雙引号

定界符(heredoc syntax)

 看見了吧,單引号居然可以用來表示字元串。那麼如果我想表示單引号怎麼辦?和大多數語言一樣,使用轉義符号吧。即反斜線"\".那麼使用單引号和雙引号有什麼差別呢?我的觀點是沒有多大差別。唯一的差別就是雙引号可以應用更多的轉義符。

 讓我們定界符吧。它的文法是"<<<"。用法是在其後提供一個辨別符,然後在辨別符後提供字元串,再在字元串後提供此辨別符來結尾。例如:

1 <?php

2  $str= <<<EOD

3   Hello, this is an example for HEREDOC Syntax.

4   Please attention to it.

5   EOD;

6   echo $str;

7 ?>

注意,這裡的提供的标志符是EOD,中間的是字元串。

2. 字元串的特别之處

   從一個例子開始。

   假設裡你有很長的一段字元串,比如一段話。幾個月後,你發現你的需求改變,需要在這段話的某個位置插入一個變量。這個時候如果重新用字元串符肯定是相當複雜的。那麼有沒有其他的方法呢?請放心,PHP已經考慮到這一點了。那就是花括号的應用。

  對于PHP,它一般

會按照如下規則解析:

     如果遇到美元符号($),解析器會盡可能多地取得後面的字元以組成一個合法的變量名。如果想明示指定名字的結束,用花括号把變量名括起來。例如

2 $beer = 'Heineken';

3 echo "$beer's taste is great"; // works, "'" is an invalid character for varnames

4 echo "He drank some $beers";  // won't work, 's' is a valid character for varnames

5 echo "He drank some ${beer}s"; // works

6 echo "He drank some {$beer}s"; // works

7 ?> 

 看看第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 

PHP 12 :字元串的操作

]] )

string sprintf ( string format [, mixed args [, mixed 

PHP 12 :字元串的操作

改變字元串的大小寫。

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

格式化字元,以便存儲。

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

字元串比較

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

字元串長度請調用strlen.

字元串連接配接與分割

      explode類似于C#裡的Split函數。例如:

2 $str = "Is yours name O'reilly?";

3 $var=explode(" ",$str);

4 echo $var[0];//輸出:Is

5 echo $var[1];//輸出:yours

6 ?> 

    implode()和join()提供的功能一樣,正好與explode()相反,它們将多個字元換合并起來。

   strtok()和split類似,但是它一次隻取出一個。

  為了取得子字元串,調用substr()吧。

查找字元串中的字元串

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

查找字元串的位置可以使用strpos()以及strrpos().

替換的話,調用str_replace()以及substr_replace().

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

上一篇: PHP 11:函數
下一篇: PHP 13: 類