初始化

PHP 字符串指的是字符的序列,PHP 字符串是二进制安全的 (例如:可以包含空字符)而且可以随意加长或缩短。

初始化

php 字符串可以通过3种方法进行初始化

  • 单引号

  • 双引号

  • heredoc ("here document")

单引号

因为 php 不会检查单引号字符串中的插入变量以及任何转义序列,所以用这种方法定义字符直观,速度快

双引号

可以识别变量以及转义序列

转义序列列表

转义序列列表
\n换行 (ASII码10)
\r回车符 (ASII码13)
\t制表符 tab (ASII码9)
\反斜杠
\$美元符号
\"双引号
\0至\777八进制数值
\x0至\xFF十六进制数值

使用双引号,可以有三种方法打印出 "The sauce cost $10.25"

1

echo "The sauce cost \$10.25"

2

$cost='$10.25'; 
echo "The sauce cost $cost";

3

echo "The sauce cost \$\061\060.\x32\x35."

heredoc

heredoc 定义的字符串可以识别变量双引号字符能够识别的转义序列且不需要对双引号和单引号进行转义

heredoc 以符号 <<< 加一个记号来定义字符串的开始(记号不能为空行或者带有空格,一般为大写),并以该记号后跟一个分号(如必要)标识字符串的结尾。

结尾带分号

echo <<< My_doc
I've gone to the sotre, the sauce cost \$10.25
My_doc;

结尾不带分号

$cost='$10.25';
echo <<< My_doc
I've gone to the sotre, the sauce cost
My_doc
.$cost;

要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在 UNIX 和 Mac OS X 系统中是 \n,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。 如果不遵守该规则导致结束标识不“干净”,PHP 将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP 将会在最后一行产生一个解析错误。

转自 php 手册 http://php.net/manual/zh/language.types.string.php#language.types.string.syntax.heredoc

7 种输出 "The sauce cost $10.25" 的方法

1

echo "The sauce cost $10.25"

2

echo "The sauce cost \$10.25"

3

$cost='$10.25'; 
echo "The sauce cost $cost";

4

echo "The sauce cost \$\061\060.\x32\x35."

5

echo <<< My_doc
The sauce cost \$10.25
My_doc;

6

$cost='$10.25';
echo <<< My_DOC
The sauce cost 
My_DOC
.$cost;

7

$doc = <<< My_DOC
The sauce cost \$10.25
My_DOC;

echo $doc;

获得字符串中的字符

字符串中制定位置的字符可以通过两种方法引用方括号大括号。 推荐使用大括号,因为大括号应用是后来加入 php 中,用来直观的分辨出字符串索引和数组索引。

以下两个语句都可以输出 e 字母

$str="neighbour";
echo $str{1};
echo $str[1];