1. 程式人生 > >第四招 PHP之字串

第四招 PHP之字串

單引號與雙引號的區別

單引號:不能識別字符串中插入的變數,需要轉義的特殊字元只有反斜槓和單引號本身。

雙引號:可以解析字串中的變數,需要轉義的特殊字元有

雙引號中需要轉義的特殊字元
\n 換行
\r 回車
\t 製表
\\ 反斜槓
\$ 美元符
\" 雙引號

 

heredoc與nowdoc

heredoc:作用和雙引號一樣,可以解析變數,特殊字元同樣需要用反斜槓進行轉義。

語法規則:<<<標誌符

 文字資訊

標誌符;

注:標誌符可以用雙引號括起來,結束標誌符不能有空格。

例如:以下程式輸出hello  PHP。

<?php
$learn="PHP";
$str=<<<FOF
 hello $learn
FOF;
echo $str;
?>

 

nowdoc:作用和單引號一樣,不可以解析變數,特殊字元同樣需要用反斜槓進行轉義。

語法規則:<<<'標誌符'

 文字資訊

標誌符;

注:標誌符可以用雙引號括起來,結束標誌符不能有空格。

例如:以下程式輸出hello $learn。

<?php
$learn="PHP";
$str=<<<'FOF'
 hello $learn
FOF;
echo $str;
?>

 

字串的簡易操作

 

字串長度:

int  strlen(string $str)返回字串長度。

<?php
$str="PHP";
$len=strlen($str);
echo $len;
?>

 

字串查詢:

int  stripos(string $haystack,string $needle[,int $offset=0])返回字串中部分字串首次出現的位置(不區分大小寫)。

haystack
在該字串中查詢。

needle
注意 needle 可以是一個單字元或者多字元的字串。

如果 needle 不是一個字串,那麼它將被轉換為整型並被視為字元順序值。

offset
可選的 offset 引數,從字元此數量的開始位置進行搜尋。 如果是負數,就從字元末尾此數量的字元數開始統計。

int strpos(string $haystack,string $needle[,int $offset=0])返回字串中部分字串首次出現的位置(區分大小寫)。

haystack
在該字串中進行查詢。

needle
如果 needle 不是一個字串,那麼它將被轉換為整型並被視為字元的順序值。

offset
如果提供了此引數,搜尋會從字串該字元數的起始位置開始統計。 如果是負數,搜尋會從字串結尾指定字元數開始。

int strrpos(string $haystack,string $needle[,int $offset=0])返回字串中部分字串最後出現的位置(區分大小寫)。

haystack
在此字串中進行查詢。

needle
如果 needle不是一個字串,它將被轉換為整型並被視為字元的順序值。

offset
或許會查詢字串中任意長度的子字串。負數值將導致查詢在字串結尾處開始的計數位置處結束。

int strripos(string $haystack,string $needle[,int $offset=0])返回字串中部分字串最後出現的位置(不區分大小寫)。

haystack
在此字串中進行查詢。

needle
注意 needle 可以是一個單字元或者多字元的字串。

offset
引數 offset 可以被指定來查詢字串中任意長度的子字串。

負數偏移量將使得查詢從字串的起始位置開始,到 offset 位置為止。

 

字串替換

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

該函式返回一個字串或者陣列。該字串或陣列是將 subject 中全部的 search 都被 replace 替換之後的結果。

mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

該函式返回一個字串或者陣列。該字串或陣列是將 subject 中全部的 search 都被 replace 替換(忽略大小寫)之後的結果。

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

pattern
要搜尋的模式。可以使一個字串或字串陣列。

可以使用一些PCRE修飾符。

replacement
用於替換的字串或字串陣列。如果這個引數是一個字串,並且pattern 是一個數組,那麼所有的模式都使用這個字串進行替換。如果pattern和replacement 都是陣列,每個pattern使用replacement中對應的 元素進行替換。如果replacement中的元素比pattern中的少, 多出來的pattern使用空字串進行替換。

replacement中可以包含後向引用\\n 或$n,語法上首選後者。 每個 這樣的引用將被匹配到的第n個捕獲子組捕獲到的文字替換。 n 可以是0-99,\\0和$0代表完整的模式匹配文字。 捕獲子組的序號計數方式為:代表捕獲子組的左括號從左到右, 從1開始數。如果要在replacement 中使用反斜線,必須使用4個("\\\\",譯註:因為這首先是php的字串,經過轉義後,是兩個,再經過 正則表示式引擎後才被認為是一個原文反斜線)。

當在替換模式下工作並且後向引用後面緊跟著需要是另外一個數字(比如:在一個匹配模式後緊接著增加一個原文數字), 不能使用\\1這樣的語法來描述後向引用。比如, \\11將會使preg_replace() 不能理解你希望的是一個\\1後向引用緊跟一個原文1,還是 一個\\11後向引用後面不跟任何東西。 這種情況下解決方案是使用${1}1。 這建立了一個獨立的$1後向引用, 一個獨立的原文1。

當使用被棄用的 e 修飾符時, 這個函式會轉義一些字元(即:'、"、 \ 和 NULL) 然後進行後向引用替換。當這些完成後請確保後向引用解析完後沒有單引號或 雙引號引起的語法錯誤(比如: 'strlen(\'$1\')+strlen("$2")')。確保符合PHP的 字串語法,並且符合eval語法。因為在完成替換後, 引擎會將結果字串作為php程式碼使用eval方式進行評估並將返回值作為最終參與替換的字串。

subject
要進行搜尋和替換的字串或字串陣列。

如果subject是一個數組,搜尋和替換回在subject 的每一個元素上進行, 並且返回值也會是一個數組。

limit
每個模式在每個subject上進行替換的最大次數。預設是 -1(無限)。

count
如果指定,將會被填充為完成的替換次數。

 

字串擷取

string substr ( string $string , int $start [, int $length ] )

string
輸入字串。必須至少有一個字元。

start
如果 start 是非負數,返回的字串將從 string 的 start 位置開始,從 0 開始計算。例如,在字串 “abcdef” 中,在位置 0 的字元是 “a”,位置 2 的字串是 “c” 等等。

如果 start 是負數,返回的字串將從 string 結尾處向前數第 start 個字元開始。

如果 string 的長度小於 start,將返回 FALSE。

字串轉義

string addslashes ( string $str )

返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。
這些字元是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字元)。

 

改變字串大小寫

string ucfirst ( string $str )

將 str 的首字元(如果首字元是字母)轉換為大寫字母,並返回這個字串。

string lcfirst ( string $str )

返回第一個字母小寫的 str 

string ucwords ( string $str [, string $delimiters = " \t\r\n\f\v" ] )

將 str 中每個單詞的首字元(如果首字元是字母)轉換為大寫字母,並返回這個字串。

這裡單詞的定義是緊跟在 delimiters 引數(預設:空格符、製表符、換行符、回車符、水平線以及豎線)之後的子字串。

string strtoupper ( string $string )

將 string 中所有的字母字元轉換為大寫並返回。

string strtolower ( string $string )

將 string 中所有的字母字元轉換為小寫並返回。

 

字串去首尾空格和特殊字元

string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] )

str
待處理的字串。

character_mask
可選引數,過濾字元也可由 character_mask 引數指定。一般要列出所有希望過濾的字元,也可以使用 “..” 列出一個字元範圍。