php变量替换,php变量替换的方法实例总结

把变量替换到字符串中一般有简单的方法和复杂的方法两种方式:

简单的方法是把变量名放在双引号字符串或heredoc中:$who = ‘Kilroy';

$where = ‘here';

echo “$who was $where”;

Kilroy was here

复杂的方法是把要替换的变量用大括号括起来。这种方法可以用于消除歧义或替换数组查找。大括号的经典作用是把变量名从周围的文本中分隔出来:$n = 12;

echo “You are the {$n}th person”;

You are the 12th person

如果没有大括号的话,PHP就会尝试打印出变量$nth的值。

和一些shell环境不同,在PHP字符串中变量不会重复解析,而只处理在双引号字符串中的解析,然后把其结果被作为字符串的值:$bar = ‘this is not printed';

$foo = ‘$bar'; // 单引号

print(”$foo”); //双引号

$bar

用单引号括起来的字符串

用单引号括起来的字符串并不替换变量。因为字符串直接量是用单引号括起来的,所以在下面的字符串中变量名没有被解析:$name = ‘Fred';

$str = ‘Hello, $name'; // single-quoted 用单引号括起来

echo $str;

Hello, $name

在用单引号括起来的字符串中唯一可用的转义序列是 \'(把单引号放在用单引号括起来的字符串中)、\\(把一个反斜杠放在用单引号括起来的字符串中)。任何其他的反斜杠只能被解释为一个反斜杠:$name = ‘Tim O\'Reilly'; //转义的单引号

echo $name;

$path = ‘C:\\WINDOWS'; //转义的反斜杠

echo $path;

$nope = ‘\n'; // 不是转义序列

echo $nope;

Tim O'Reilly

C:\WINDOWS

\n

用双引号括起来的字符串

用双引号括起来的字符串将会进行变量解析并且允许使用许多转义序列。下面列出了在用双引号括起来的字符串中PHP认可的转义序列。

用双引号括起来的字符串中的转义序列

转义序列 字符含义

\” 双引号

\n 换行

\r 回车

\t 制表符

\\ 反斜杠

\$ 美元符号

\{ 左大括号

\} 右大括号

\[ 左中括号

\] 右中括号

\0 through \777 用八进制表示的ASCII字符

\x0 through \xFF 用十六进制表示的ASCII字符

如果在用双引号括起来的字符串中发现一个未知的转义序列,就忽略这个转义序列(如果警告级设置为E_NOTICE,就会为这样的未知序列产生一个警告):$str = “What is \c this?”; // 未知的转义序列

echo $str ;

What is \c this?

字符串定界

使用heredoc可以简单地把多行字符串放在程序中,如下所示:

$clerihew = <<< End_Of_Quote

Sir Humphrey Davy

Abominated gravy.

He lived in the odium

Of having discovered sodium.

End_Of_Quote;

echo $clerihew;

Sir Humphrey Davy

Abominated gravy.

He lived in the odium

Of having discovered sodium.

<<

你可以把分号放在终止标识符的后面来结束语句,正如前面的代码所示。如果你在一个更复杂的表达式中使用heredoc,你需要将表达式分行来写:

printf(<<< Template

%s is %d years old.

Template

, “Fred”, 35);

在heredoc中的单引号和双引号被跳过(当作一般的符号):$dialogue = <<< No_More

“It's not going to happen!” she fumed.

He raised an eyebrow. “Want to bet?”

No_More;

echo $dialogue;

“It's not going to happen!” she fumed.

He raised an eyebrow. “Want to bet?”

在heredoc中的空白符也被保留:$ws = <<< Enough

boo

hoo

Enough;

// $ws = ” boo\n hoo\n”;

因为在结尾终止符前的换行符将被移除,所以下面这两个赋值是相同的:$s = ‘Foo';

// same as 和下面的相同

$s = <<< End_of_pointless_heredoc

Foo

End_of_pointless_heredoc;

如果想用一个换行符来结束heredoc引用的字符串,则需要自己额外加入:$s = <<< End

Foo

End;

//注意Foo后面跟一个空行,不可

删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值