Maison > développement back-end > Problème PHP > Méthode de substitution de variables PHP

Méthode de substitution de variables PHP

藏色散人
Libérer: 2023-03-07 18:40:02
original
2751 Les gens l'ont consulté

php变量替换的实现方法:1、把变量名放在双引号字符串或heredoc中;2、把要替换的变量用大括号括起来,用于消除歧义或替换数组查找即可。

Méthode de substitution de variables PHP

推荐:《PHP视频教程

本教程操作环境:windows7系统、PHP5.6版,该方法适用于所有品牌电脑。

php变量替换的实现方法:

当用双引号或heredoc定义字符串直接量时,字符串服从变量替换(variable interpolation)规则。替换即在字符串中用变量的值来替换变量名,也就是说在字符串中会自动进行变量解析。

有两种方法把变量替换到字符串中——简单的方法和复杂的方法。

简单的方法是把变量名放在双引号字符串或heredoc中:

$who = ‘Kilroy';
$where = ‘here';
echo “$who was $where”;
Kilroy was here
Copier après la connexion

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

$n = 12;
echo “You are the {$n}th person”;
You are the 12th person
Copier après la connexion

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

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

$bar = ‘this is not printed';
$foo = ‘$bar'; // 单引号
print(”$foo”); //双引号
$bar
Copier après la connexion

4.1.2 用单引号括起来的字符串

Single-Quoted Strings
Copier après la connexion

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

$name = ‘Fred';
$str = ‘Hello, $name'; // single-quoted 用单引号括起来
echo $str;
Hello, $name
Copier après la connexion

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

$name = ‘Tim O\'Reilly'; //转义的单引号
echo $name;
$path = ‘C:\\WINDOWS'; //转义的反斜杠
echo $path;
$nope = ‘\n'; // 不是转义序列
echo $nope;
Tim O'Reilly
C:\WINDOWS
\n
Copier après la connexion

4.1.3 用双引号括起来的字符串

Double-Quoted Strings
Copier après la connexion

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

表4-1:用双引号括起来的字符串中的转义序列

转义序列 字符含义
\”
双引号
\n
换行
\r
回车
\t
制表符
\\
反斜杠
\$
美元符号
\{
左大括号
\}
右大括号
\[
左中括号
\]
右中括号
\0 through \777
用八进制表示的ASCII字符
\x0 through \xFF
Copier après la connexion

用十六进制表示的ASCII字符

如果在用双引号括起来的字符串中发现一个未知的转义序列(例如,一个反斜杠后跟一个不在表4-1中的字符),就忽略这个转义序列(如果警告级设置为E_NOTICE,就会为这样的未知序列产生一个警告):

$str = “What is \c this?”; // 未知的转义序列
echo $str ;
What is \c this?
Copier après la connexion

4.1.4 字符串定界

Here Documents heredoc
Copier après la connexion

使用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.
Copier après la connexion

<<<符号(我们习惯称为字符串定界符――译者注)告诉PHP解析器你正在书写一个heredoc。在<<<符号和标识符(本例中即 End_Of_Quote)之间必须有一个空格,这样程序才可以辨别标识符。从下一行开始就是被引用的文本,直到它遇到仅由标识符组成的一行为止。

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

printf(<<< Template
%s is %d years old.
Template
, “Fred”, 35);
Copier après la connexion

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

$dialogue = <<< No_More
“It&#39;s not going to happen!” she fumed.
He raised an eyebrow. “Want to bet?”
No_More;
echo $dialogue;
“It&#39;s not going to happen!” she fumed.
He raised an eyebrow. “Want to bet?”
Copier après la connexion

在heredoc中的空白符也被保留:

$ws = <<< Enough
boo
hoo
Enough;
// $ws = ” boo\n hoo\n”;
Copier après la connexion

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

$s = ‘Foo&#39;;
// same as 和下面的相同
$s = <<< End_of_pointless_heredoc
Foo
End_of_pointless_heredoc;
Copier après la connexion

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

$s = <<< End
Foo
End;
//注意Foo后面跟一个空行,不可删除
Copier après la connexion

该方法适用于所有品牌的电脑。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal