以下为一些php对字符串的处理:
<?php //单引号 内容原样输出 $name = 'hongda'; $teacher = 'peter'; echo '$name is learning PHP'; echo '<hr>'; //双引号能够解析变量 echo "$name is learning PHP"; ?>
输出结果为
所以single quotes 会把里面的内容原样输出 不能解析里面的变量
double quotes 能解析里面的变量
<?php /** * Created by PhpStorm. * User: hongda * Date: 12/04/2018 * Time: 10:50 AM */ $name = 'hongda'; $title = '$nameislearningPHP'; //$title1 = "$nameislearningPHP"; //明显错误 $nameislearningPHP此变量没定义 //怎么把 $name 给解析出来 给变量加上定界符 {} 作为嵌套 告诉系统 变量是$name $title1 = "{$name}islearningPHP"; echo $title.'<br>'.$title1;
输出结果如下:
如何在定界符中输出 定界符 ' "
<?php /** * Created by PhpStorm. * User: hongda * Date: 12/04/2018 * Time: 10:50 AM */ //用 \ 做字符的转义 echo 'i said : \'i am found of learning PHP.\''; echo '<br>'; echo "i said : \"i am found of learning PHP.\"";
在定界符里面输出特殊字符
<?php //单引号不会解析特殊字符 echo 'Will tomorrow rain? \n no.'; echo '<hr>'; // \n在页面中会被解析为空格 只有在源码中才会换行 echo "Will tomorrow rain? \n no."; echo '<hr>'; //nl2br() 可以将字符串中的\n 转换成 br标签 echo nl2br("Will tomorrow rain? \n no.");
输出结果如下:
heredoc 和 nowdoc
<?php $name = 'hongda'; /* * heredoc * 与双引号创建字符串是一样的 可以解析变量和特殊字符 * 内部的双引号不需要转义 */ $username = <<<logininfo Your username is $name! \n he is studying "php". logininfo; echo $username; echo '<br>'; echo nl2br($username); echo '<hr>'; /* * nowdoc对应着单引号功能:原样输出 不解析变量和特殊字符 单引号也不用转义 * 开始必须加单引号 */ $username1 = <<<'logininfo' <h2>$name</h2> \r\n 'www.w3schools.com' logininfo; echo $username1;
输出结果如下:
可见 nowdoc对特殊字符没有转义功能 但是里面的单引号 ' ' 可以被自动转义
总结:
单引号 内容原样输出 不能解析变量 双引号能够解析变量
在定界符中输出定界符 可以用 \ 来完成转义
在定界符里面输出特殊字符 如 \n 用nl2br()函数完成 (可以吧\n 转义成 br标签)
heredoc 和 nowdoc :heredoc 与双引号创建字符串是一样的 可以解析变量和特殊字符 内部的双引号不需要转义. nowdoc对应着单引号功能:原样输出 不解析变量和特殊字符 单引号也不用转义 开始必须加单引号