旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

php单引号和双引号用法【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:79


导读:  看很多代码有时刻用单引号或双引号完成包括字符串的内容,实在简朴归纳综合下就是双引号中的变量能够剖析,单引号就是相对的字符串。下面就为人人细致引见一下。引荐教程:PH...

  看很多代码有时刻用单引号或双引号完成包括字符串的内容,实在简朴归纳综合下就是双引号中的变量能够剖析,单引号就是相对的字符串。下面就为人人细致引见一下。

引荐教程:PHP视频教程

1、定义字符串

  在PHP中,字符串的定义能够运用单引号,也能够运用双引号。然则必需运用同一种单或双引号来定义字符串,如:‘Hello"和“Hello'为不法的字符串定义。   

  定义字符串时,只要一种引号被视为定义符,即单引号或双引号。因而,假如一个字符串由双引号最先,那末只要双引号被分析器剖析。如许,你就可以够在双引号串中包括任何其他字符,以至单引号。下面的引号串都是正当的:

$s = "I am a 'single quote string' inside a double quote string"; 
$s = 'I am a "double quote string" inside a single quote string'; 
$s = "I am a 'single quote string' inside a double quote string"; 
$s = 'I am a "double quote string" inside a single quote string';   

  而串 "Why doesn't "this" work?" 则会被分为三段。假如在这个串中想要表示出双引号,则能够运用转义符"\"(反斜线),变成 "Why doesn't \"this\" work?" 即可。

2、字符串变量中的单、双引号  

PHP许可我们在双引号串中直接包括字串变量,我们能够发明下面的两个字串的处置惩罚效果是雷同的。

$full_name = $first_name . ' ' . $last_name; 
$full_name = "$first_name $last_name";  

  单引号串和双引号串在PHP中的处置惩罚是不雷同的。双引号串中的内容能够被诠释而且替代,而单引号串中的内容总被认为是一般字符。比方:

$foo = 2; 
echo "foo is $foo"; // 打印效果: foo is 2 
echo 'foo is $foo'; // 打印效果: foo is $foo 
echo "foo is $foo\n"; // 打印效果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印效果: foo is $foo\n 
$foo = 2; 
echo "foo is $foo"; // 打印效果: foo is 2 
echo 'foo is $foo'; // 打印效果: foo is $foo 
echo "foo is $foo\n"; // 打印效果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印效果: foo is $foo\n   

  正如你所看到的,在单引号串中以至反斜杠也失去了他的扩大寄义(除了插进去反斜杠\\和插进去单引号\')。所以,当你想在字串中举行变量代换和包 含\n(换行符)等转义序列时,你应当运用双引号。单引号串能够用在其他任何地方,剧本中运用单引号串处置惩罚速率会更快些,因为PHP语法分析器对单引号串 的处置惩罚方式比较纯真,而双引号的处置惩罚因为串内部也须要剖析,因而更庞杂些,所以处置惩罚速率略慢。   

  在字符串中援用庞杂的变量组应时,可能会发生一些题目,下面的代码会一般事情:

echo "value = $foo"; 
echo "value = $a[$i]"; 
echo "value = $foo"; 
echo "value = $a[$i]";   

而下面的代码却不能获得我们愿望的效果:

echo "value = $a[$i][$j]"; //我们愿望打印二维数组$a的某个元素。   

为防止这些字串运用中的潜伏题目,我们一般把庞杂的变量从字串中分离开来,就像如许:

echo 'value = ' . $a[$i][$j];//字符串的衔接用点(.)

另有一种要领是将庞杂变量用花括号括起来,语法分析器就可以准确辨认了:

echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素   

3、在SQL语句中

  这是会常常碰到的题目,在插进去数据库的SQL语句是采纳单引号来定义字符串,假如要将一个含有单引号的字符串插进去数据库,这个SQL语句就会失足。

如:

$sql="insert into userinfo (username,password) Values('O'Kefee','123456')"  

  此时,处置惩罚的要领之一是在SQL语句中到场转义符反斜线,

即:……Values('O\'Kefee',……   

  固然也能够运用函数 addslashes(),该函数的功用就是到场转义符,

即:

$s = addslashes("O'Kefee") ……Values('".$s."',……   

  另有一种要领是设置php.ini中的magic-quotes选项,翻开该选项,则经由过程表单提交的信息中假如有单引号是,将会自动加上如转义符。因而不必运用其他函数了。

  补充: 这就要从双引号和单引号的作用讲起: 双引号内里的字段会经由编译器诠释然后再看成HTML代码输出,然则单引号内里的不须要诠释,直接输出。

比方:

$abc='I love u'; 
echo $abc //效果是:I love u 
echo '$abc' //效果是:$abc 
echo "$abc" //效果是:I love u

  所以在对数据库内里的SQL语句赋值的时刻也要用在双引号内里SQL="select a,b,c from ..." 然则SQL语句中会有单引号把字段名引出来

比方:

select * from table where user='abc';

  这里的SQL语句能够直接写成SQL="select * from table where user='abc'"

  然则假如象下面

$user='abc'; 
SQL1="select * from table where user=' ".$user." ' ";对照一下 
SQL2="select * from table where user=' abc ' "

  我把单引号和双引号之间多加了点空格,愿望你能看的清晰一点。

  也就是把'abc' 替代为 '".$user."'都是在一个单引号内里的。只是把全部SQL字符串分割了。 SQL1能够分解为以下3个部份

  1:"select * from table where user=' "

  2:$user

  3:" ' "

字符串之间用 . 来衔接,如许能邃晓了吧。

以上就是php单引号和双引号用法的细致内容,更多请关注ki4网别的相干文章!

标签:PHP