PHP中单引号与双引号的区别分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中单引号与双引号的区别分析相关的知识,希望对你有一定的参考价值。

参考技术A ①转义的字符不同
单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身。如果用双引号(“”)括起字符串,PHP懂得更多特殊字符串的转义序列。
<?php
$str1
=
'\',\\,\r\n\t\v\$\"';
echo
$str1,'<br
/>';
$str2
=
"\",\\,a\r\n\tb\v\$\'";
echo
$str2,'<br
/>';
?>
②对变量的解析不同
单引号字符串中出现的变量不会被变量值替代。即PHP不会解析单引号中的变量,而是将变量名原样输出。双引号字符串最重要的一点是其中的变量名会被变量值替代,即可以解析双引号中包含的变量。
<?php
$age
=
20;
$str1
=
'I
am
$age
years
old';
$str2
=
"I
am
$age
years
old";
echo
$str1,'<br
/>';
//
I
am
$age
years
old
echo
$str2,'<br
/>';
//
I
am
20
years
old;
?>
③解析速度不同
单引号不需要考虑变量的解析,速度比双引号快.推荐用单引号.有的时候双引号也比较好用,比如在拼凑sql
语句
反斜杠
//使用单引号
echo
'
this
\n
is
\r
the
blog
\t
of
\\
zhoumanhe
\\';
//上面使用单引号输出的值是
this
\n
is
\r
the
blog
\t
of

zhoumanhe

echo
'
';
echo
"
";
//使用双引号
echo
"this
\n
is
\r
the
blog
\t
of
\\
zhoumanhe
\\";
//上面使用双引号输出的值是
this
is
the
blog
of

zhoumanhe

使用sql
假设查询条件中使用的是常量,例如:
select
*
from
abc_table
where
user_name='abc';
SQL语句可以写成:
SQLstr
=
“select
*
from
abc_table
where
user
_name=
‘abc'”
;
假设查询条件中使用的是变量,例如:
$user_name
=
$_REQUEST['user_name'];
//字符串变量

$user=array
(”name”=>
$_REQUEST['user_name‘,"age"=>$_REQUEST['age'];//数组变量
SQL语句就可以写成:
SQLstr
=
“select
*
from
abc_table
where
user_name
=


.
$user_name
.


“;
SQLstr
=
“select
*
from
abc_table
where
user_name
=


.
$user["name"]
.


“;
对比一下:
SQLstr=”select
*
from
abc_table
where
user_name
=

abc


;
SQLstr=”select
*
from
abc_table
where
user_name
='

.
$user
_name
.


“;
SQLstr=”select
*
from
abc_table
where
user_name
='

.
$user["name"]
.


“;
SQLstr可以分解为以下3个部分:
1:”select
*
from
table
where
user_name
=


//固定SQL语句
2:$user
//变量
3:”


附:大家也看到了
echo
'<br/>';
html中的标签在单引号和双引号中都有效。
总结一下PHP引号使用原则
1.字符串的值用引号
2.PHP中尽量用单引号,HTML代码全部用双引号
3.在包含变量的时候,用双引号可以简化操作
4.复杂的情况下用大括号包起来
PHP引号还有一个用处就是,有的时候需要用php生成文本文件,换行符n需要用双引号才能好使,单引号则会直接把n当成字符输出。
使用总结:在字符串里面不需要加入
变量
或者
单引号(')和反斜杠(\)
时,尽量用单引号引字符串,因为省去了双引号检查处理转义和解析变量上面的时间。能用单引号尽量用单引号。

php 如何过滤 单引号 双引号 $ < > 等N种特殊符号?谢谢

php 如何过滤 单引号 双引号 $ < > 等N种特殊符号?谢谢

我给楼主吧- - 首先是过滤html,将html编码转换为实体编码 /**
* 将特殊字符转成 HTML 格式。
* @param string $value - 字符串或者数组
* @return array
*/
public static function htmlspecialchars($value)
return is_array($value) ? array_map('k::htmlspecialchars', $value) :
preg_replace('/&((#(\d3,5|x[a-fA-F0-9]4)|[a-zA-Z][a-z0-9]2,5);)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value));
还有一个去除html编码的,可以直接用php的函数strip_tags()
参考技术A 我给楼主吧- - 首先是过滤html,将html编码转换为实体编码 /**
* 将特殊字符转成 HTML 格式。
* @param string $value - 字符串或者数组
* @return array
*/
public static function htmlspecialchars($value)
return is_array($value) ? array_map('k::htmlspecialchars', $value) :
preg_replace('/&((#(\d3,5|x[a-fA-F0-9]4)|[a-zA-Z][a-z0-9]2,5);)/', '&\\1',
str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value));
还有一个去除html编码的,可以直接用php的函数strip_tags()
参考技术B function SafeHtml($msg = "")

if(empty($msg))

return false;

$msg = str_replace('&','&',$msg);
$msg = str_replace(' ',' ',$msg);
$msg = str_replace("'","'",$msg);
$msg = str_replace('"',""",$msg);
$msg = str_replace("<","<",$msg);
$msg = str_replace(">",">",$msg);
$msg = str_replace("\t"," ",$msg);
$msg = str_replace("\r","",$msg);
$msg = str_replace(" "," ",$msg);
$msg = preg_replace("/<script(.*?)<\/script>/is","",$msg);
$msg = preg_replace("/<frame(.*?)>/is","",$msg);
$msg = preg_replace("/<\/fram(.*?)>/is","",$msg);
return $msg;
参考技术C 用trim()函数从字符串的两端删除空白字符和其他预定义字符。
ltrim()函数从字符串左侧删除空格或其他预定义字符。
rtrim()函数从字符串的末端开始删除空白字符或其他预定义字符。

以上是关于PHP中单引号与双引号的区别分析的主要内容,如果未能解决你的问题,请参考以下文章

PHP中单引号与双引号的区别分析

浅谈PHP中单引号和双引号到底有什么区别呢?

php中单引号和双引号的区别,哪个速度更快?为啥?

MySQL中单引号,双引号和反引号的区别

SQL查询语句中单引号和双引号的问题

SQL查询语句中单引号和双引号的问题