本章介紹字元串的操作。
之是以要把字元串單獨拿出來講,是因為字元串在每種語言裡都是非常重要的。并且也是大家關心的。
我們從以下幾個方面介紹字元串:
字元串的表現形式。
字元串的特别之處。
字元串的常用操作。
說點具體的吧。
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
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuIGO1UjY0AjZyUWZ0YWOjlzYxY2YwADZlZjYilTZ2cTYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
]] )
string sprintf ( string format [, mixed args [, mixed
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuIGO1UjY0AjZyUWZ0YWOjlzYxY2YwADZlZjYilTZ2cTYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
改變字元串的大小寫。
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的函數文檔。