PHP中字串的四種表示方式

2021-08-20 16:32:45 字數 2576 閱讀 3612

在php中有四種方式可以表示字串,分別是單引號、雙引號、heredoc語法結構、nowdoc語法結構。

定義字串的最簡單的方法,用單引號把字元包圍起來。使用單引號時,如果要表達單引號或者反斜槓需要使用反斜槓「\」進行轉義。單引號中只對這兩個字元進行轉義。在單引號中的變數和特殊字元的轉義序列不會被替換。單引號中的字元可以是多行的。

<?php

$name = 'php';

@header("content-type: text/html; charset=utf-8");

echo '最簡單的字串表達形式'."\n";

echo '可以是

多行的'."\n";

echo '單引號"\'"和反斜槓"\\"需要使用"\"轉義'."\n";

echo '"\\"與"\"是一樣的'."\n";

echo '其他特殊字元如\n、\r和變數$name是不會轉換的'."\n";

?>

如果字元被雙引號包圍,php將對其中的一些特殊字元進行解析,雙引號可解析的特殊字元如下,雙引號字串最重要的特性是變數解析。

\n:換行(ascii 字符集中的 lf 或 0x0a (10))

\r;回車(ascii 字符集中的 cr 或 0x0d (13))

\t;水平製表符(ascii 字符集中的 ht 或 0x09 (9))

\v;垂直製表符(ascii 字符集中的 vt 或 0x0b (11))(自 php 5.2.5 起)

\e;escape(ascii 字符集中的 esc 或 0x1b (27))(自 php 5.4.0 起)

\f;換頁(ascii 字符集中的 ff 或 0x0c (12))(自 php 5.2.5 起)

\\;反斜線

\$;美元標記

\";雙引號

\[0-7];符合該正規表示式序列的是乙個以八進位制方式來表達的字元

\x[0-9a-fa-f];符合該正規表示式序列的是乙個以十六進製制方式來表達的字元

<?php

$name = 'php';

@header("content-type: text/html; charset=utf-8");

echo "雙引號中單引號'不需要轉義反斜槓\也不需要轉義雙引號\"需要轉義\n";

echo "雙引號也可以是

多行的\n";

echo "\"\\\\\"與\"\\\"是一樣的,但是如果想要表示兩個反斜槓則需要使用四個反斜槓\n";

echo "還可以轉義其他一些特殊字元,如:\\\$轉義為\$,\\x41轉義為\x41\n";

echo "還可以解析變數,如:\\\$name解析為$name\n";

?>

heredoc語法結構是使用《加開始標記和結束標記。在《之後提供乙個識別符號(此識別符號的命名需要遵循php標籤的命名規則,即只能包含字母、數字以及下劃線,並且不能以數字開頭),然後換行,接下來是字串本身, 最後用前面定義的識別符號做為結束標記。需要注意的是,開始標記後必須換行,結束標記所在行除了分號「;」外,不能有包含其他字元包括縮排,分號前後也不能有任何空白或製表符等。在heredoc結構中,單引號、雙引號與回車符(\r)與單個反斜槓是不需要轉義的,如果要表示多個反斜槓則需要進行轉義,其他轉義字元與雙引號支援的轉義字元相同。heredoc結構類似於雙引號字串。

heredoc結構可以用於變數初始化,也可以用在函式引數中傳遞資料。從php5.3起,如果heredoc中不包含變數,那麼也可以用來初始化靜態變數和類中的屬性、常量。還可以通過雙引號宣告開始識別符號。

<?php

@header("content-type: text/html; charset=utf-8");

$name = 'php';

function foo()

}$foo = new foo();

echo foo::cons."\n";

echo < $foo->test.

=>.

eot;

?>

nowdoc語法結構是php5.3引入的,與heredoc語法結構類似,使用《加開始標記和結束標記。但是在《後面的開始識別符號必須用單引號包圍起來,heredoc的所有規則同樣適用於nowdoc結構,尤其是結束識別符號的規則。nowdoc結構類似於單引號字串。nowdoc中不進行解析操作,適用於嵌入php**或大段文字而無需對其中的特殊字元進行轉義。與sgml中的結構宣告大段的不用解析的文字類似。

<?php

@header("content-type: text/html; charset=utf-8");

$name = 'php';

function foo()

foo();

/* 含有變數的更複雜示例 */

class foo

}$foo = new foo();

echo foo::cons."\n";

echo <<<'eot'

nowdoc中不支援複雜的格式如:

\$foo->test=> $foo->test.

=>.

eot;

?>

四種PHP定義字串的方式

閱讀目錄 1 簡介 在php中這門語言中,因為是弱型別語言,因此使用變數時不需提前定義即可使用。我們在使用php進行開發的時候,大多數使用雙引號 單引號進行定義字串。既然有這兩種方式,那麼他們之間肯定是有區別的。並且,除了單雙引號定義字串這兩種方式外,php還增加了heredoc和nowdoc這兩種...

PHP定義字串的四種方式

1 單引號 在單引號中,任何特殊字元都會按原樣輸出 除 和 將會被轉義輸出 僅僅只有單引號 反斜槓被轉義 2 雙引號 在雙引號中,遇到 將會解析該變數 雙引號中會轉義反斜槓的轉義字元 單雙引號之間的區別 雙引號會替換變數的值,而單引號會把它當做字串輸出。對於轉義的支援 效能速度問題,由於雙引號中的字...

PHP定義字串的四種方式

1 簡介 在php中這門語言中,因為是弱型別語言,因此使用變數時不需提前定義即可使用。我們在使用php進行開發的時候,大多數使用雙引號 單引號進行定義字串。既然有這兩種方式,那麼他們之間肯定是有區別的。並且,除了單雙引號定義字串這兩種方式外,php還增加了heredoc和nowdoc這兩種語法糖進行...