字符串单双引号区别

来源:互联网 发布:淘宝客收入 编辑:程序博客网 时间:2024/04/29 16:39
1:如何声明一个字符串变量 
答: 
双引号 
单引号 
定界符 
*/ 
$str1 = "hello"; 
echo $str1,'<br />'; 
// $str2 = "hello,"jack" "; // 这个字符串,是一个新闻标题,标题里很容易又出现双引号. 
/** 
思考: 
用双引号,来声明字符串的时候, 
内部不能再出现双引号, 
因为,双引号被当成字符串的"边界"来对待, 
因此,内部出现双引号,就引起了解释上的歧义. 
这时,可以用转义字符, 
即,用\" 转义 来表示 " 
还有没有其他的转义字符呢? 
想: \", 被用来当成 " 理解了. 
那我要是确实想表示 反斜线\, 又怎么办呢?, 
答: 用\\, 表示 反斜线\ 
还有没有其他的转义字符呢? 
答:有 
\n, \r, \$,等 
\n 转义成 换行符 
\r 转义成 回车符 
**/ 
$str2 = "hello ,\"jack\",<br />"; 
echo $str2; 
$str3 = "hello \\"; 
echo $str3,'<br />'; 








029-字符串定界符的用法 
 <?php 
// 当需要写一大段文本,好多行,里面又有单引号,又有双引号,导致转义的时候,都比较麻烦. 
// 还可以用heredoc, nowdoc两种界定字符串的方式 
$age = 29; 
$str = <<<cont 
我来写一行, 
再来第2行, ' " \, 
dsafd  abc \t \r\n haha 
$age 
cont; 
echo $str; 


$str4 = "hello\n\r\n\r\n\rworld"; 
echo $str4,'<br />'; 
$str5 = "hello $str3"; 
echo $str5,'<br />';  // hello hello \, 即把$str3当变量给解析出来 
$str6 = "world \$str3"; //此处 \$被转成了普通字符串$,而不再理解为变量标志. 
echo $str6; 
?> 
<?php 
// 再看单引号 
$str1 = 'hello'; 
echo $str1,'<br />'; 
// $str2 = 'hello 'jack''; // 某字符串是新闻标题,标题又出现单引号, 
// 单引号里又出现的单引号怎么办呢? 
// '被用来做字符串的边界了, 
// 因此,串内想出现',只好用转义来表示 
$str2 = 'hello \'jack\''; 
echo $str2,'<br />'; 
// \被用来转义单引号用了,那么如果我确实想表示\,怎么办呢. 
// \\ 来 表示 \ 
$str3 = 'hello \\'; 
echo $str3; 
?> 
<?php 
// 常见的面试题 
// 1:单双引号定义字符串有何区别? 
$age = 29; 
$str1 = 'hello \n\r \t $age'; 
$str2 = "hello \n\r \t $age"; 
echo $str1,'<br />',$str2; 
/* 
转义上的区别: 
单引号,系统不做复杂的转义, 
只转义\',\\, 其他的---一律原样输出. 
双引号,则转义的比较多,\",\\,\r,\n,\t,\$等. 
对于变量解释的区别: 
单引号,不对字符串的$作变量名解析, 
而双引号,会试着$理解成变量名,来解析. 
*/ 
// 2:单双引号定义字符串,哪个速度更快一些? 
// 答:单引号解析的更快,因为不需要进行过多的转义和变量解析 
// 问:什么时间选用单/双引号呢? 
/* 
答:大段文本,比如新闻标题,文本内容,自我介绍等这样大段话, 
用',解析快. 
但有时候,确实需要在一段字符串夹杂变量, 
比如拼凑sql语句时 
$id = 5; 
$sql = "select * from user where id = $id"; 
// 如果此时用单引,则语句成为了 ..id= $id,sql就出错了. 
// 此时,用双引合适. 解析$id,语句解析成 ..id = 5; 
*/ 
?>
0 0