PHP 第二節 資料型別之字串型別

2022-09-26 10:30:26 字數 3544 閱讀 3501

php中乙個字串可以通過下面的4種方式來定義:

單引號定義乙個字串 的最簡單的方法是用單引號把它包圍起來 (標點符號 ')。

如果想要輸出乙個單引號,需在它的前面加個反斜線 (\)。在單引號前或在字串的結尾處 想要輸出反斜線,輸入兩條 (\\)。注意,如果在任何其它的字元前加了反斜線,反斜線將會被直接輸出。

note: 不像雙引號 和heredoc語法結構, 在單引號字串中的變數 和特殊含義的字元將不會被替換。

如果字串是包圍在雙引號(")中, php將對一些轉義字元進行解析,和單引號字串一樣, 如果輸出轉義字元之外的字元,反斜線會被列印出來。 php5.1.1以前,\ 中的反斜線還不會被顯示出來。

用雙引號定義的 字串最重要的特徵是變數會被執行。

heredoc結構

第三種定義字串的方法是用heredoc句法結構:<<<。在該提示 符後面,要定義個識別符號,然後是乙個新行。接下來是字串本身,最後要用前面定義的識別符號作為結束標誌。

結束時所引用的識別符號必須在一行的開始位置, 而且,識別符號的命名也要像其它標籤一樣遵守php的規則:只能包含 字母、數字和下劃線,並且不能用數字和下劃線作為開頭。

warning要注意的是結束識別符號這行除了 可能有乙個分號(;)外,絕對不能包括 其它字元。這意味著識別符號不能縮排,分號的前後也不能有任何空白或tabs。更重要的是結束識別符號的前面必須是個被本地 作業系統認可的新行標籤,比如在unix和mac os x系統中是\n ,而結束識別符號(可能有個分號)的後面也必須跟個 新行標籤。

如果不遵守該規則導致結束標籤不「乾淨」,php將認為它不是結束識別符號而繼續尋找。如果在檔案結束前也沒有找到乙個正確的結束識別符號,php將會在最後一 行產生乙個句法錯誤。

heredoc結構就象是沒有使用雙引號的雙引號字串, 這就是說在heredoc結構中引號不用被替換,但是上文中列出的字元 (\n等)也可使用。 變數將被替換,但在heredoc結構中字串表達複雜變數時,要格外小心。

nowdoc結構

就象heredoc結構類似於雙引號字串,nowdoc結構是類似於單引號字串的。nowdoc結構很象heredoc結構,但是 nowdoc不進行解析操作 。 這種結構很適合用在不需要進行轉義的php**和其它大段文字。與sgml的 結構是用來宣告大段的不用解析的文字類似,nowdoc結構也有相同的特徵。

乙個nowdoc結構也用和heredocs結構一樣的標記 <<<, 但是跟在後面的標誌符要用 單引號括起來,就像《這樣。heredocs結構的所有規則也同樣適用於nowdoc結 構,尤其是結束標誌符的規則。

變數解析

當字串用雙引號或heredoc結構定義時,其中的變 量將會被解析。

這裡共有兩種語法規則:一種簡單 規則,一種複雜規 則。簡單的句法規則是最常用和最方便的, 它可以用最少的**在乙個字串中加入變數, 陣列 值,或 物件屬性。

複雜的句法規則是在php4以後加入的,被花括號包圍的表示式是其明顯標記。

簡單句法規則

當php解析器遇到乙個美元符號 ($) , 它會和其它很多解析器一樣,去盡量形成乙個合法的變數名。可以用花括 號來明確變數名的界線。

如果想要表達更複雜的結構,請用複雜句法規則。

複雜句法規則

複雜句法規則不是結構複雜而命名,而是因為它可以使用複雜的表示式。

任何想用在字串中標量變數,陣列變數或物件屬性都可使用這種方法。 只需簡單地像在字串以外的地方那樣寫出表示式, 然後用花括號把它括起來。 由於 { 無法被轉義,只有 $ 要緊挨著 {才會被認出來,可以用 {\$ 來表達 {$。

訪問和修改字串中的字元

字串中的字元可以通過乙個以0為開始的,用類似陣列結構中的方括號包含對應的數字來查詢和修改,比如 $str[42], 可以把 字串想像陣列 。 函式 substr() 和 substr_replace()可以用來實現多於乙個字元 的情況。

warning方括號中的數字超出範圍將會產生空白。非整數型別被轉換成整數,非整數型別轉變成整數,非法型別會產生乙個e_notice級別錯誤,負數在寫入時會產生乙個e_notice,但讀 取的是空字串。被指定的字串只有第乙個字元可用,空字串用指定為空位元組。

字串可以用'.' (點) 操作符連線起來, 注意 '+' (加號) 操作符沒有 這個功能。 

對於字串的操作有很多有用的函式。

可以程式設計客棧參考 字串函式 了解大部分函式, 高階的查詢&替換功能可以參考 正規表示式函式 或 perl型別的正則 表示式函式。

另外還有url字串的函式, 也有加密/解密字串的函式。 (mcrypt 和 mhash).

最後,可以參考 字元型別函式。  

乙個值可以通過在其前面加上(string)或用strval()函式來轉變成 字串。 在乙個需要字串的表示式中,字串會自動轉變,比如在使用函式 echo 或 print 時, 或在乙個變數和乙個 字串 進行比較時,就會發生這種轉變 型別 和 型別轉換 可以更好的解釋下面的事情,也可參考函 數 settype() 。

乙個booleantrue值被轉換成 字串"1"。 booleanfalse被轉換成"" (空的字串)。 這種轉變可以在 boolean 和 字串 之間往返進行。

乙個 整數 或 浮點數 被轉變為數字的字面樣式的字串 (包括 浮點數中的指數部分),使用指數計數法的浮點數 (4.1e+6)也可轉變。

陣列轉換成 字串 "array",因此, echo 和 print c無法顯示出該陣列的值。如果顯示乙個陣列值,可以用 echo $arr['foo']這種結構,更多內容見下文。

在php 4中物件被轉換成 字串 "object", 為了除錯原因需要列印出物件的值,方法見正文。為了得到物件的類的名稱,可以用 get_class() 函式。 在php5中, 可以用 __tostring 。

資源總會被轉變成"resource id #1"這種結構的字串 , 其中的 1 是php分配給該資源的獨特數字。不用過多關注這種結構,它馬上要轉變了。為了得到乙個 resource型別,可以用函式 get_resource_type()。

null總是被轉變成空的字串。

如上面所說的,直接把陣列, 物件或 資源 轉換成 字串 不會得到超出其自身的更多資訊。可以使用函式 print_r() 和 var_dump() 列出這些型別的內容。

大部分的php值可以轉變成 字串s 來長期儲存,這被稱作序列化,可以用函式 serial程式設計客棧ize() 來實現。 如果php引擎設定支援 wddx , php值也可儲存成xml格式。

當乙個字串被用在了乙個數字的環境中,結果和型別如下:

如果字串沒有包含 '.','e'或'e' 並且數字值符合整數型別的限定 (php_int_max定義的), 這個 字串 可被認定是乙個 integer, 在其它情況下被認定為乙個float。

字串的開始部分給定了它的值,如果 字串 以合法的數字開始,這個數字可直接使用。 否則,值就是 0 (零)。 合法數值由符號,後面跟著乙個或多個數程式設計客棧字(可能有個小數點),再跟著可選的指數符號如'e' 或 'e',後面跟著乙個或多個數字。

不要想像在c語言中的那樣,通過乙個整數轉換得到相應字元,使用函式 ord() 和 chr() 實現ascii碼和字元間的轉換。

本文標題: php 第二節 資料型別之字串型別

本文位址: /wangluo/php/87351.html

python複習第二節之字串

1.字串的定義方式有三種 分別為 單引號,雙引號,三引號 注意不能混用,三引號可以做多行注釋 如果字串本身有單引號雙引號 三引號可以 進行轉義 2.字串的拼接可以使用 多個相同的字串相連可以使用 n 3.字串的特殊sequence 序列 1.可以通過下標查詢 2.可以進行切片 3.空字串 str 4...

python基礎第二節 字串

轉義字元是一種特殊的字元常量。轉義字元以反斜線 開頭,後跟乙個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱 轉義 字元 常用的轉義字元及其作用 轉義字元 說明 在行尾時 續行符 n 換行符 雙引號 單引號 乙個反斜槓 t水平製表符 0dd 八進位制數,dd代表的字元,如 012 代...

php 字串(string)資料型別

什麼是字串 string 字串就是連續的字串行,由數字,字母和符號組成。在字串的每個字元只占用乙個位元組。在php中,有三種定義字串的方式,分別是單引號 雙引號 和定界符 單引號和雙引號是經常被使用定義字串的方式,定義如下 單引號單引號和雙引號的不同之處就在雙引號所包含的變數會自動的被替換成實際數值...