php字符串

php中一个字符串可以用 4 种方式表达:

  • 单引号
  • 双引号
  • heredoc语法结构
  • nowdoc语法结构(自php5.3开始)

1.单引号

定义一个字符串的最简单的方法是用单引号把它包围起来(字符 '),要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\\)。其它任何方式的反斜线都会被当成反斜线本身。不像双引号和 heredoc 语法结构,在单引号字符串中的变量和特殊字符的转义序列将不会被替换。

// 输出: Arnold once said: "I'll be back"

echo 'Arnold once said: "I\'ll be back"';

// 输出: You deleted C:\*.*?

echo 'You deleted C:\\*.*?';

// 输出: Variables do not $expand $either

echo 'Variables do not $expand $either';

2.双引号

如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析,用双引号定义的字符串最重要的特征是变量会被解析。

3.Heredoc 结构

第三种表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。结束时所引用的标识符必须在该行的第一列。

要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,比如在 UNIX 和 Mac OS X 系统中是 \n,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义,但是转义序列还可以使用。变量将被替换。

<?php

/* 含有变量的更复杂示例 */

class foo

{

    var $foo;

    var $bar;



    function foo()

    {

        $this->foo = 'Foo';

        $this->bar = array('Bar1', 'Bar2', 'Bar3');

    }

}



$foo = new foo();

$name = 'MyName';



echo <<<EOT

My name is "$name". I am printing some $foo->foo.

Now, I am printing some {$foo->bar[1]}.

This should print a capital 'A': \x41

EOT;

?>
  以上例程会输出:

My name is "MyName". I am printing some Foo.

Now, I am printing some Bar2.

This should print a capital 'A': A

4.Nowdoc 结构

就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<, 但是跟在后面的标识符要用单引号括起来,即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。

你可能感兴趣的:(PHP)