久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

PHP中對單引號和雙引號的區(qū)別

 Rico 2010-01-03

PHP中對單引號和雙引號的區(qū)別(好文)

1、定義字符串

  在PHP中,,字符串的定義可以使用單引號,,也可以使用上引號。但是必須使用同一種單或雙引號來定義字符串,如:‘Hello"和“Hello'為非法的字符串定義,。

  定義字符串時,,只有一種引號被視為定義符,即單引號或雙引號,。于是,,如果一個字符串由雙引號開始,那么只有雙引號被分析器解析,。這樣,,你就可以在雙引號串中包含任何其他字符,甚至單引號,。下面的引號串都是合法的:

Php代碼
  1. $s = "I am a 'single quote string' inside a double quote string";   
  2. $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?" 則會被分為三段,。如果在這個串中想要表示出雙引號,則可以使用轉(zhuǎn)義符"\"(反斜線),,變成 "Why doesn't \"this\" work?" 即可,。

2、字符串變量中的單,、雙引號

  PHP允許我們在雙引號串中直接包含字串變量,,我們可以發(fā)現(xiàn)下面的兩個字串的處理結(jié)果是相同的。

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

  單引號串和雙引號串在PHP中的處理是不相同的,。雙引號串中的內(nèi)容可以被解釋而且替換,,而單引號串中的內(nèi)容總被認(rèn)為是普通字符。例如:

Php代碼
$foo = 2;   
  1. echo "foo is $foo"; // 打印結(jié)果: foo is 2   
  2. echo 'foo is $foo'; // 打印結(jié)果: foo is $foo   
  3. echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行)   
  4. echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n  
$foo = 2;
echo "foo is $foo"; // 打印結(jié)果: foo is 2
echo 'foo is $foo'; // 打印結(jié)果: foo is $foo
echo "foo is $foo\n"; // 打印結(jié)果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 打印結(jié)果: foo is $foo\n

 

   正如你所看到的,,在單引號串中甚至反斜杠也失去了他的擴展含義(除了插入反斜杠\\和插入單引號\'),。所以,當(dāng)你想在字串中進行變量代換和包 含\n(換行符)等轉(zhuǎn)義序列時,,你應(yīng)該使用雙引號,。單引號串可以用在其他任何地方,腳本中使用單引號串處理速度會更快些,,因為PHP語法分析器對單引號串 的處理方式比較單純,,而雙引號的處理由于串內(nèi)部也需要解析,因此更復(fù)雜些,,所以處理速度略慢,。

  在字符串中引用復(fù)雜的變量組合時,可能會產(chǎn)生一些問題,,下面的代碼會正常工作:

Php代碼
  1. echo "value = $foo";   
  2. echo "value = $a[$i]";  
echo "value = $foo";
echo "value = $a[$i]";

 

 

 

   而下面的代碼卻不能得到我們希望的結(jié)果:
echo "value = $a[$i][$j]"; //我們希望打印二維數(shù)組$a的某個元素,。

  為避免這些字串使用中的潛在問題,我們通常把復(fù)雜的變量從字串中分離開來,,就像這樣:
echo 'value = ' . $a[$i][$j];//字符串的連接用點(.)

  還有一種辦法是將復(fù)雜變量用花括號括起來,,語法分析器就能正確辨認(rèn)了:
echo "value = {$a[$i][$j]}" //打印二維數(shù)組$a的某個元素

  這樣,,又出現(xiàn)新問題了。當(dāng)我們想在字串中引用花括號字符本身時,,就要記得使用轉(zhuǎn)義符了:

Php代碼
  1. $var = 3;   
  2. echo "value = {$var}"; // 打印結(jié)果 "value = 3"   
  3. echo "value = \{$var}"; // 打印結(jié)果 "value = {3}"  
$var = 3;
echo "value = {$var}"; // 打印結(jié)果 "value = 3"
echo "value = \{$var}"; // 打印結(jié)果 "value = {3}"

 

 

 

3,、在SQL語句中

  這是會經(jīng)常遇到的問題,在插入數(shù)據(jù)庫的SQL語句是采用單引號來定義字符串,,如果要將一個含有單引號的字符串插入數(shù)據(jù)庫,,這個SQL語句就會出錯。如:
$sql="insert into userinfo (username,password) Values('O'Kefee','123456')"

  此時,,處理的方法之一是在SQL語句中加入轉(zhuǎn)義符反斜線,,即:……Values('O\'Kefee',……

  當(dāng)然也可以使用函數(shù) addslashes(),該函數(shù)的功能就是加入轉(zhuǎn)義符,,即:
$s = addslashes("O'Kefee")                       ……Values('".$s."',……

  還有一種方法是設(shè)置php.ini中的magic-quotes選項,,打開該選項,則通過表單提交的信息中如果有單引號是,,將會自動加上如轉(zhuǎn)義符,。因此不用使用其他函數(shù)了。

補充:

這就要從雙引號和單引號的作用講起:
雙引號里面的字段會經(jīng)過編譯器解釋然后再當(dāng)作HTML代碼輸出,,但是單引號里面的不需要解釋,,直接輸出。例如:
$abc='I love u';
echo $abc //結(jié)果是:I love u
echo '$abc' //結(jié)果是:$abc
echo "$abc" //結(jié)果是:I love u
所以在對數(shù)據(jù)庫里面的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:" ' "
字符串之間用 . 來連接,,這樣能明白了吧。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多