PHP字符串——簡單應用

錯誤的學習編碼語言觀點:語言語法不用記,多練習就能夠了。   應該是死記住,而後增強練習以避免忘記。以及在練習中增強理解。試着想「爲何是這樣的語法習慣」。
PHP提供了8種數據類型。4種是標量型(單值)的:整型、浮點型、字符串和布爾值;兩種是複合型(集合)的:數組和對象。兩種特殊類型:資源和NULLshell

靜態變量在全部對該函數的調用中是共享的,而非靜態變量會在函數結束時被銷燬。
嵌套聲明並無限制內部定義函數的可見性。除非外部函數被調用,不然內部函數沒法被調用。數組

字符串的定義:
字符串能夠是任意長度的字符序列。字符串直接量用單引號或雙引號分隔。

變量用雙引號括起來,單引號中的變量符號不解析。
測試兩個字符串是否相等,使用==比較操做符: if($a==$b) {echo "a and b are equal"}
使用is_string()函數測試一個值是否爲字符串:if(is_string($x)){//}
PHP提供了操做符和函數來對字符串進行比較、拆分、合併、查找、替換和去除首尾空格,也有許多特定的字符串函數來處理HTTP、HTML和SQL編碼。
變量的替換:
有兩種方法把變量替換到字符串中:
一、雙引號包含
$who='kilroy';
$where='here';
echo "$who was $where";
二、大括號包含。這種方法能夠用於消除歧義或替換數組查找。大括號的經典做用是把變量名從周圍的文本中分隔出來。
$n=12;
echo "You are the {$n}th person";
You are the 12th person
若是沒有大括號的話,PHP就會嘗試打印出變量$nth的值。
和一些shell環境不一樣,在PHP字符串中變量不會重複解析,而只處理在雙引號字符串中的解析,而後把其結果做爲字符串的值。
$bar='this is not printed';
$foo='$bar';//單引號
print("$foo");//雙引號
$bar
用單引號括起來的字符串並不替換變量:
$name='Fred';
$str='Hello,$name';//用單引號括起來
echo $str;
Hello,$name
特殊符號轉義:
在用單引號括起來的字符串中惟一可用的轉義序列是\'(把單引號放在用單引號括起來的字符串中)、\\(把一個反斜槓放在用單引號括起來的字符串中)。任何其餘的反斜槓只能被解釋爲一個反斜槓:
$name='Time O\'Reilly'; //轉義的單引號
echo $name;
Time O'Reilly
$path='C:\\WINDOWS';   //轉義的反斜槓
echo $path;
C:\WINDOWS
$nope='\n';            //不是轉義序列
echo $nope;
\n  
用雙引號括起來的字符串將會進行變量解析而且容許使用許多轉義序列。\"(雙引號)、\n(換行符)、\r(回車)、\t(製表符)、\\(反斜槓)、\$(美圓符號)、\{、\}、\[、\](左右大括號與中括號)、\0 throuth \777(用八進制表示的ASCII字符)、\x0 through \xFF(用十六進制表示的ASCII字符)
若是在用雙引號括起來的字符串中發現一個未知的轉義序列,就忽略這個轉義序列(若是警告級設置爲E_NOTICE,就會爲這樣的未知序列產生一個警告):
$str="What is \c this?"; //未知的轉義序列
echo $str;
What is \c this?瀏覽器

字符串的打印:有4種方法能夠向瀏覽器發送輸出內容。echo結構讓你一次輸出許多值,而print()只能輸出一個值。printf()函數經過把值插入到模板中來創建一個格式化的字符串。print_r()函數利於調試——它用更容易讀懂的方式來打印數組、對象和其它東西的內容。         echo的大部分行爲看起來像是一個函數,但其實echo是一個語言結構(language construct)。這意味着能夠省略小括號,因此下面兩個語句是等價的:
echo "Printy";
echo ("Printy");  //也是合法的
能夠經過逗號分隔來指定打印多個項:
echo "First","second","third";
Firstsecondthird
在嘗試echo多個值時,使用小括號會產生語法錯誤:
echo("Hello","world");      //這是一個語法錯誤
由於echo並非真正的函數,因此不能夠把它做爲表達式的一部分使用:
if(echo("test")){echo ("it worked!");}
經過使用函數print()或printf(),很容易補救這種錯誤。
print():函數print()發送一個值(它的參數)給瀏覽器。若是字符串成功顯示則返回true,不然返回false(例如,用戶在頁面提交以前按下Stop按鈕)
if (!print("Hello,world")){
    die("you're not listening to me!");
}
Hello,world

printf():函數printf()經過把值傳入到模板中(即定義好的字符串格式)來輸出一個字符串。它源自標準C庫中的同名函數。
函數sprintf()和printf()的參數相同,但只是返回生成的字符串而不打印出來。這可讓你把字符串保存到一個變量中供稍後使用:
$date=sprintf("%02d/%02d/%04d",$month,$day,$year);//如今咱們能夠在任何一個須要日期的地方將類型說明符%的替換成$date的值。

print_r()結構能夠聰明地顯示傳給它的東西,而不是像echo和print()那樣把全部的都轉換爲字符串。使用print_r(),字符串和數字都簡單地打印出來,而數組則以括起來的鍵和值得列表形式顯示,並以Array開頭。
在數組中使用print_r()能夠將移動內部的迭代器指針指到數組裏最後一個元素的位置。

訪問單個字符:
函數strlen()返回字符串中的字符數,即字符長度:
$string='Hello,world';
$length=strlen($string); //$length爲12
能夠在字符串中使用字符串偏移量語法來定位單個字符:
$string='Hello';
for($i=0;$i<strlen($string);$i++){
    printf("The %dth charactor is %s\n",$i,$string{$i});
}
The 0th character is H
The 1th character is e
The 2th character is l
The 3th character is l
The 4th character is o

整理字符串
一般,咱們從文件或用戶獲得的字符串在使用前須要整理(Cleaning)。原始數據的兩個廣泛問題是沒用的空白符號(如空格、換行)的存在和不正確的字母大小寫。

刪除空白符
可使用函數trim()、ltrim()、rtrim()刪除字符串開頭或結尾的空白符(whitespace):
$trimmed=trim(string[,charlist]);
$trimmed=ltrim(string[,charlist]);
$trimmed=rtrim(string[,charlist]);
trim()返回刪除首尾空白的字符串。ltrim()(l是指left) 只刪除字符串開頭的空白。rtrim()(r是指right)只刪除字符串末尾的空白。可選參數charlist是一個指定全部要刪除字符的字符串。默認狀況下要刪除的字符有:空格(" ")、製表符("\t")、換行("\n")、回車("\r")、字符("\0")、縱向列表符("\x0B")

改變大小寫
PHP有一些函數用於改變字符串的大小寫:strtolower()和strtoupper()操做整個字符串,ucfirst()只操做字符串的第一個字母,ucwords()則操做字符串中每一個單詞的第一個字母。每個函數都把字符串做爲參數來執行,並適當地改變大小寫,而後返回字符串的拷貝。例如:
$string1="FRED flintston";
$string2="barney rubble";
print(strtolower($string1)); //fred flintston
print(strtoupper($string1)); //FRED FLINTSTON
print(ucfirst($string2));    //Barney rubble
print(ucwords($string2));    //Barney Rubble函數

相關文章
相關標籤/搜索