看很多多少代码有时分用单引号或双引号完成蕴含字符串的内容,其实简略归纳综合下就是双引号中的变量能够解析,单引号就是相对的字符串。上面就为各人具体引见一下。
保举教程: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开发自学