php单引号和双引号用法-php教程

资源魔 58 0

  看很多多少代码有时分用单引号或双引号完成蕴含字符串的内容,其实简略归纳综合下就是双引号中的变量能够解析,单引号就是相对的字符串。上面就为各人具体引见一下。

保举教程:PHP视频教程

一、界说字符串

  正在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?" 便可。

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

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的某个元素   

三、正在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单引号以及双引号用法的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!