• 技术文章 >后端开发 >PHP问题

    php 变量替换的方法

    藏色散人藏色散人2020-11-30 16:23:56原创40

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

    推荐:《PHP视频教程

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

    php变量替换的实现方法:

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

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

    简单的方法是把变量名放在双引号字符串或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

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

    Single-Quoted Strings

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

    $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

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

    Double-Quoted Strings

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

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

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

    用十六进制表示的ASCII字符

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

    $str = “What is \c this?”; // 未知的转义序列
    echo $str ;
    What is \c this?

    4.1.4 字符串定界

    Here Documents heredoc

    使用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.

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

    你可以把分号放在终止标识符的后面来结束语句,正如前面的代码所示。如果你在一个更复杂的表达式中使用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后面跟一个空行,不可删除

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

    以上就是php 变量替换的方法的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:php将数组转换成字符串 下一篇:php正则字符串替换的实现方法
    第14期线上培训班

    相关文章推荐

    • php正则如何不包含某字符串• iis 如何隐藏index.php• 怎么解决php读取文件乱码问题• php将数组转换成字符串

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网