现在的位置: 首页 > 综合 > 正文

PHP手册-字符串的几种打印方法

2013年01月31日 ⁄ 综合 ⁄ 共 2256字 ⁄ 字号 评论关闭

单引号

定义一个字符串 的最简单的方法是用单引号把它包围起来 (标点符号 ')。----最快,不解析引号中间的PHP关键字

echo 'this is a simple string';

// 可以录入多行
echo 'You can also have embedded newlines in 
strings this way as it is
okay to do';

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

// 输出: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';

// 输出: You deleted C:\*.*?
echo 'You deleted C:\*.*?';

// 输出: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// 输出: Variables do not $expand $either
echo 'Variables do not $expand $either';

双引号

如果字符串是包围在双引号(")中, PHP将对一些特殊的字符进行解析:

Escaped characters
Sequence Meaning
\n 换行 (LF or 0x0A (10) in ASCII)
\r 回车 (CR or 0x0D (13) in ASCII)
\t 水平方向的 tab(HT or 0x09 (9) in ASCII)
\v 竖直方向的 tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5)
\f 换页 (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)
\\ 反斜线
\$ 美金dollar标记
\" 双引号
\[0-7]{1,3} 符合该表达式顺序的字符串是一个八进制的字符
\x[0-9A-Fa-f]{1,2} 符合该表达式顺序的字符串是一个十六进制的字符

Heredoc结构

第三种定义字符串的方法是用heredoc句法结构:<<<。在该提示 符后面,要定义个标识符,然后是一个新行。接下来是字符串 本身,最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在一行的开始位置, 而且,标识符的命名也要像其它标签一样遵守PHP的规则:只能包含 字母、数字和下划线,并且不能用数字和下划线作为开头。

要注意的是结束标识符这行除了
可能
有一个分号(;)外,绝对不能包括 其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或tabs。更重要的是结束标识符的前面必须是个被本地 操作系统认可的新行标签,比如在UNIX和Mac OS X系统中是\n ,而结束标识符(可能有个分号)的后面也必须跟个 新行标签。

如果不遵守该规则导致结束标签不“干净”,PHP将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP将会在最后一 行产生一个句法错误。

Heredoc结构就象是没有使用双引号的双引号字符串, 这就是说在heredoc结构中引号不用被替换,但是上文中列出的字符(\n等)也可使用。 变量将被替换,但在heredoc结构中字符串表达复杂变量时,要格外小 心。

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

/* 含有变量的更复杂示例 */
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;

Nowdoc结构(在PHP中拼接其他语言的语句很适合)

就象heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很象heredoc结构,但是nowdoc不进行解析操作 。 这种结构很适合用在不需要进行转义的PHP代码和其它大段文本。与SGML的<![CDATA[ ]]> 结构是用来声明大段的不用解析的文本类似,nowdoc结构也有相同的特征。

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

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

/* 含有变量的更复杂的示例 */
class foo
{
    public $foo;
    public $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 not print a capital 'A': \x41
EOT;

抱歉!评论已关闭.