PHP第二節(jié)數(shù)據(jù)類型之字符串類型
來源:易賢網(wǎng) 閱讀:1095 次 日期:2014-05-18 00:16:39
溫馨提示:易賢網(wǎng)小編為您整理了“PHP第二節(jié)數(shù)據(jù)類型之字符串類型”,方便廣大網(wǎng)友查閱!

PHP中一個字符串可以通過下面的4種方式來定義:

單引號

雙引號

heredoc語法結構

nowdoc語法結構(自PHP5.3.0以后)

單引號

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

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

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

如果字符串是包圍在雙引號(")中,PHP將對一些轉(zhuǎn)義字符進行解析,和單引號字符串一樣,如果輸出轉(zhuǎn)義字符之外的字符,反斜線會被打印出來。PHP5.1.1以前,\{$var}中的反斜線還不會被顯示出來。

用雙引號定義的字符串最重要的特征是變量會被執(zhí)行。

Heredoc結構

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

結束時所引用的標識符必須在一行的開始位置,而且,標識符的命名也要像其它標簽一樣遵守PHP的規(guī)則:只能包含字母、數(shù)字和下劃線,并且不能用數(shù)字和下劃線作為開頭。

Warning要注意的是結束標識符這行除了可能有一個分號(;)外,絕對不能包括其它字符。這意味著標識符不能縮進,分號的前后也不能有任何空白或tabs。更重要的是結束標識符的前面必須是個被本地操作系統(tǒng)認可的新行標簽,比如在UNIX和MacOSX系統(tǒng)中是\n,而結束標識符(可能有個分號)的后面也必須跟個新行標簽。

如果不遵守該規(guī)則導致結束標簽不“干凈”,PHP將認為它不是結束標識符而繼續(xù)尋找。如果在文件結束前也沒有找到一個正確的結束標識符,PHP將會在最后一行產(chǎn)生一個句法錯誤。

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

Nowdoc結構

就象heredoc結構類似于雙引號字符串,Nowdoc結構是類似于單引號字符串的。Nowdoc結構很象heredoc結構,但是nowdoc不進行解析操作。這種結構很適合用在不需要進行轉(zhuǎn)義的PHP代碼和其它大段文本。與SGML的<![CDATA[]]>結構是用來聲明大段的不用解析的文本類似,nowdoc結構也有相同的特征。

一個nowdoc結構也用和heredocs結構一樣的標記<<<,但是跟在后面的標志符要用單引號括起來,就像<<<'EOT'這樣。heredocs結構的所有規(guī)則也同樣適用于nowdoc結構,尤其是結束標志符的規(guī)則。

變量解析

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

這里共有兩種語法規(guī)則:一種簡單規(guī)則,一種復雜規(guī)則。簡單的句法規(guī)則是最常用和最方便的,它可以用最少的代碼在一個字符串中加入變量,數(shù)組值,或?qū)ο髮傩浴?/p>

復雜的句法規(guī)則是在PHP4以后加入的,被花括號包圍的表達式是其明顯標記。

簡單句法規(guī)則

當PHP解析器遇到一個美元符號($),它會和其它很多解析器一樣,去盡量形成一個合法的變量名??梢杂没ɡㄌ杹砻鞔_變量名的界線。

如果想要表達更復雜的結構,請用復雜句法規(guī)則。

復雜句法規(guī)則

復雜句法規(guī)則不是結構復雜而命名,而是因為它可以使用復雜的表達式。

任何想用在字符串中標量變量,數(shù)組變量或?qū)ο髮傩远伎墒褂眠@種方法。只需簡單地像在字符串以外的地方那樣寫出表達式,然后用花括號{和}把它括起來。由于{無法被轉(zhuǎn)義,只有$要緊挨著{才會被認出來,可以用{\$來表達{$。

存取和修改字符串中的字符

字符串中的字符可以通過一個以0為開始的,用類似數(shù)組結構中的方括號包含對應的數(shù)字來查找和修改,比如$str[42],可以把字符串想像數(shù)組。函數(shù)substr()和substr_replace()可以用來實現(xiàn)多于一個字符的情況。

Warning方括號中的數(shù)字超出范圍將會產(chǎn)生空白。非整數(shù)類型被轉(zhuǎn)換成整數(shù),非整數(shù)類型轉(zhuǎn)變成整數(shù),非法類型會產(chǎn)生一個E_NOTICE級別錯誤,負數(shù)在寫入時會產(chǎn)生一個E_NOTICE,但讀取的是空字符串。被指定的字符串只有第一個字符可用,空字符串用指定為空字節(jié)。

有用的函數(shù)和操作符

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

對于字符串的操作有很多有用的函數(shù)。

可以參考字符串函數(shù)了解大部分函數(shù),高級的查找&替換功能可以參考正則表達式函數(shù)或Perl類型的正則表達式函數(shù)。

另外還有URL字符串的函數(shù),也有加密/解密字符串的函數(shù)。(mcrypt和mhash).

最后,可以參考字符類型函數(shù)。

轉(zhuǎn)換成字符串

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

一個booleanTRUE值被轉(zhuǎn)換成字符串"1"。BooleanFALSE被轉(zhuǎn)換成""(空的字符串)。這種轉(zhuǎn)變可以在boolean和字符串之間往返進行。

一個整數(shù)或浮點數(shù)被轉(zhuǎn)變?yōu)閿?shù)字的字面樣式的字符串(包括浮點數(shù)中的指數(shù)部分),使用指數(shù)計數(shù)法的浮點數(shù)(4.1E+6)也可轉(zhuǎn)變。

數(shù)組轉(zhuǎn)換成字符串"Array",因此,echo和printc無法顯示出該數(shù)組的值。如果顯示一個數(shù)組值,可以用echo$arr['foo']這種結構,更多內(nèi)容見下文。

在PHP4中對象被轉(zhuǎn)換成字符串"Object",為了調(diào)試原因需要打印出對象的值,方法見正文。為了得到對象的類的名稱,可以用get_class()函數(shù)。在PHP5中,可以用__toString。

資源總會被轉(zhuǎn)變成"Resourceid#1"這種結構的字符串,其中的1是PHP分配給該資源的獨特數(shù)字。不用過多關注這種結構,它馬上要轉(zhuǎn)變了。為了得到一個resource類型,可以用函數(shù)get_resource_type()。

NULL總是被轉(zhuǎn)變成空的字符串。

如上面所說的,直接把數(shù)組,對象或資源轉(zhuǎn)換成字符串不會得到超出其自身的更多信息??梢允褂煤瘮?shù)print_r()和var_dump()列出這些類型的內(nèi)容。

大部分的PHP值可以轉(zhuǎn)變成字符串s來長期儲存,這被稱作串行化,可以用函數(shù)serialize()來實現(xiàn)。如果PHP引擎設定支持WDDX,PHP值也可儲存成XML格式。

字符串轉(zhuǎn)變成數(shù)字

當一個字符串被用在了一個數(shù)字的環(huán)境中,結果和類型如下:

如果字符串沒有包含'.','e'或'E'并且數(shù)字值符合整數(shù)類型的限定(PHP_INT_MAX定義的),這個字符串可被認定是一個integer,在其它情況下被認定為一個float。

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

不要想像在C語言中的那樣,通過一個整數(shù)轉(zhuǎn)換得到相應字符,使用函數(shù)ord()和chr()實現(xiàn)ASCII碼和字符間的轉(zhuǎn)換。

更多信息請查看IT技術專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:PHP第二節(jié)數(shù)據(jù)類型之字符串類型

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網(wǎng)