一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

PHP 第二節(jié) 數(shù)據(jù)類型之字符串類型

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

  • 單引號
  • 雙引號
  • heredoc 語法結(jié)構(gòu)
  • nowdoc 語法結(jié)構(gòu) (自php 5.3.0以后)

單引號

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

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

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

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

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

Heredoc結(jié)構(gòu)

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

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

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

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

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

Nowdoc結(jié)構(gòu)

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

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

變量解析

字符串用雙引號或heredoc結(jié)構(gòu)定義時,其中的變 量將會被解析。

這里共有兩種語法規(guī)則:一種簡單 規(guī)則,一種復(fù)雜規(guī) 則。簡單的句法規(guī)則是最常用和最方便的, 它可以用最少的代碼在一個字符串中加入變量, 數(shù)組 值,或 對象屬性。

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

簡單句法規(guī)則

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

 

如果想要表達更復(fù)雜的結(jié)構(gòu),請用復(fù)雜句法規(guī)則。

 

復(fù)雜句法規(guī)則

 

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

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

 

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

 

字符串中的字符可以通過一個以0為開始的,用類似數(shù)組結(jié)構(gòu)中的方括號包含對應(yīng)的數(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ù)。 (mcryptmhash).

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

 

轉(zhuǎn)換成字符串

 

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

 

一個boolean TRUE 值被轉(zhuǎn)換成 字符串"1"Boolean FALSE 被轉(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",因此, echoprint c無法顯示出該數(shù)組的值。如果顯示一個數(shù)組值,可以用 echo $arr['foo']這種結(jié)構(gòu),更多內(nèi)容見下文。

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

資源總會被轉(zhuǎn)變成"Resource id #1"這種結(jié)構(gòu)的字符串 , 其中的 1php分配給該資源的獨特數(shù)字。不用過多關(guān)注這種結(jié)構(gòu),它馬上要轉(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引擎設(shè)定支持 WDDXphp值也可儲存成XML格式。

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

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

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

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

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

php技術(shù)PHP 第二節(jié) 數(shù)據(jù)類型之字符串類型,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品高清免费网站 | 美女黄色免费网站 | 91亚洲欧美综合高清在线 | 国产图片综合 | 丝袜综合网 | 日本久久免费大片 | 色狠狠一区二区三区香蕉蜜桃 | 美女一级ba大片免色野外 | 精品一区精品二区 | 亚洲一区精品在线 | 免费国产在线观看不卡 | 小视频国产 | 999成人精品视频在线 | 国产真实伦在线视频免费观看 | 91福利刘玥国产在线观看 | 手机在线观看亚洲国产精品 | 中文字幕日韩精品一区口 | 麻豆综合网 | 色噜噜狠狠在爱丁香 | 国产精品精品国产 | 欧美地区一二三区 | 国产精品无内丝袜高跟鞋 | 一区二区三区成人 | 精品国产精品国产 | 亚洲国产精品线在线观看 | 人人干夜夜操 | 久久永久免费视频 | 亚洲香蕉久久综合网 | 91热视频在线观看 | 国产成人精品第一区二区 | 国产大片免费观看中文字幕 | 亚洲黄色免费在线观看 | 久久久久综合网久久 | 4338×亚洲全国最大色成网站 | 97午夜精品 | 亚洲国产成人精彩精品 | 国产真实伦实例 | 成人免费xxx在线观看 | 精品久久久久久乐 | 日本高清在线观看视频www | 欧美在线视频在线观看 |