分析PHP中单双引号的误区和双引号小隐患

许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些区别。

1、一般情况下两者是通用的.但如果双引号内写的是变量就会执行解析操作,而单引号则不解析,这个怎么说?还是举个例子吧。

这下看明白了吧!

2、执行效率不一样,单引号的执行速度要比双引号的执行速度快,如果是一样大型的程序,这方面还是要注意优化的,毕竟PHP属于解释型语言。所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如变量)的时候,用双号引会更灵活些。

PHP双引号小隐患

PHP很多语法特性会让攻击者有机可乘,例如PHP会检测双引号中的变量。

执行如下代码:

function test()
{
 echo "abc";
}
echo "${@test()}";

//或者

 echo ${@phpinfo()};

原理如下:

$a = 'b';
$b = 'a';

echo $$a; //a

以上就利用了PHP可变变量,双引号{}可解析双引号内的变量内容特性制造出来的小麻烦。 大家看懂了吗?这些误区和小隐患程序员们在平时要多多注意了。

(0)

相关推荐

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

    ①转义的字符不同 单引号和双引号中都可以使用转义字符(\),但只能转义在单引号中引起来的单引号和转义转义符本身.如果用双引号("")括起字符串,PHP懂得更多特殊字符串的转义序列. <?php $str1 = '\',\\,\r\n\t\v\$\"'; echo $str1,'<br />'; $str2 = "\",\\,a\r\n\tb\v\$\'"; echo $str2,'<br />'; ?> ②对变

  • php下防止单引号,双引号在接受页面转义的设置方法

    PHP页面中如果不希望出现以下情况: 单引号被转义为 \' 双引号被转义为 \" 那么可以进行如下设置以防止: 方法一:在PHP.ini中设置:magic_quotes_gpc = Off 方法二: $str=stripcslashes($str)

  • php 防止单引号,双引号在接受页面转义

    PHP页面中如果不希望出现以下情况: 单引号被转义为 /' 双引号被转义为 /" 那么可以进行如下设置以防止: 方法一:在php.ini中设置:magic_quotes_gpc = Off 方法二: $str=stripcslashes($str)

  • PHP的单引号和双引号 字符串效率

    简单的回答,显然是苍白无力的. 今天我们来做个实验,看看到底单引号和双引号有什么区别,谁快,谁慢. 测试代码如下: 复制代码 代码如下: <?php $single_quotes = 'This is a String'; $double_quotes = "This is a String"; echo $single_quotes; echo $double_quotes; $var = 'String'; $single_quotes_var = 'This is a '.

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

    在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法的字符串定义. 单引号和双引号到底有啥区别呢? PHP允许我们在双引号串中直接包含字串变量. 而单引号串中的内容总被认为是普通字符,因此单引号中的内容不会被转义效率更高. 比如: 复制代码 代码如下: $str='hello'; echo "str is $str"

  • PHP 单引号与双引号的区别

    1.定义字符串 在PHP中,字符串的定义可以使用单引号,也可以使用双引号.但是必须使用同一种单或双引号来定义字符串,如:'Hello"和"Hello'为非法的字符串定义. 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引号串都是合法的: Php代码 复制代码 代码如下: $s = "I am a 'single quote string' i

  • php 输出双引号"与单引号'的方法

    在php 编程中双引号"与单引号'是字符串与字符表现形式,那么我们要输出它怎么做呢,下面我们就来看个简单的输出单双引号的实例吧. 首页我们来看输出双引号的几种方法 方法一. 复制代码 代码如下: $str ='我要输出双引号"'; echo $str; 结果为:我要输出双引号" 方法二 复制代码 代码如下: $str ="输出双引号\""; echo $str; //结果输出双引号" 输出单引号与双引号 复制代码 代码如下: <?

  • 简单概括PHP的字符串中单引号与双引号的区别

    今天有个朋友问起,说下区别,顺便复习下. 单引号与双引号的不同: " "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出. ' '单引号里面的不进行解释,直接输出. 单引号解析的时间比双引号快 . 单引号支持\转义符,双引号支持的转义符更多 . $hello= 3; echo "hello is $hello"; // 打印结果:hello is 3 echo 'hello is $hello'; // 打印结果: hello is $hello ech

  • 分析PHP中单双引号的误区和双引号小隐患

    许多程序员以为在PHP中单引号和双引号是一样的,其实这要看怎么用法,在有些方面它们确实是一样,但有一些方面它们也有着很大的区别,今天小编就来为您说说有哪些区别. 1.一般情况下两者是通用的.但如果双引号内写的是变量就会执行解析操作,而单引号则不解析,这个怎么说?还是举个例子吧. 这下看明白了吧! 2.执行效率不一样,单引号的执行速度要比双引号的执行速度快,如果是一样大型的程序,这方面还是要注意优化的,毕竟PHP属于解释型语言.所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如

  • strings命令分析浅谈Go和C++编译时的一点小区别

    最近查一个bug, 用strings命令分析, 竟然出乎意料地没有结果, 非常纳闷. 最后根据这个线索查出了bug的根本原因. 1.  在C++中, 即使函数在代码层面没有被调用, 也会最终编译到二进制中, 用strings可以分析.  #include <iostream> using namespace std; void fun() { printf("hello world\n"); // strings分析有结果 } int main() { return 0;

  • JAVA中使用双括号来初始化静态常量的小技巧

    这貌似是个不为人知的语言技巧.我看到一般人写Java里初始化静态常量都是 复制代码 代码如下: public static final Map<String, String> DATA = new TreeMap<String, String>(); static{ DATA.put("a", "A"); //blah blah blah} 使用所在类的static块来初始化DATA,其实还有另外一种写法: 复制代码 代码如下: public

  • 再谈PHP中单双引号的区别详解

    在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法的字符串定义. 单引号和双引号到底有啥区别呢?下面通过本文学习一下吧. 1.定义字符串 在PHP中,字符串的定义可以使用单引号,也可以使用双引号.但是必须使用同一种单或双引号来定义字符串,如:'Hello"和"Hello'为非法的字符串定义. 定义字符串时,只有一

  • ASP中有关双引号,单引号以及&号的解释

    很多ASP初学习的朋友都有可能在双引号,单引号以及&号上迷失了方向.最关键的是不理解三类符号的意思,当然也就不能很好地掌握它们的用法了.以下是我对三类符号的看法,技术不精,难免有疏忽之处,肯请大家多提意见. 1,双引号"" ASP中处在双引号中的可以是任意的字符.字符串,HTML代码.比如 <%response.write ("cnbruce here")%><hr><%response.write ("<b&g

  • jquery 单引号和双引号的区别及使用注意

    可以执行的语法:$("ul li a").filter(":contains('佳能'),:contains('松下'),:contains('卡西欧')").css("color","red"); 错误的语法:$("ul li a").filter(":contains("佳能"),:contains("松下"),:contains("卡西欧&q

  • Python如何实现在字符串里嵌入双引号或者单引号

    两种方法实现: 1.在双引号前面加个转义符 \ ,即反斜杠.如"Hello \"W \"orld",会输出 Hello "W"orld 2.用单引号引起整个字符串,如'Hello "W"orld',同样输出 Hello "W"orld 同理也可以在字符串里嵌入单引号,如"Hello 'W'orld",输出 Hello 'W'orld 补充拓展:python中单引号(').双引号(&quo

随机推荐