php單引號轉義
① php 單引號和雙引號的區別
1、變數。雙引號解釋變數,單引號不解釋變數;雙引號里插入單引號,其中單引號里如果有變數的話,變數解釋;
2、字元。雙引號解釋轉義字元,單引號不解釋轉義字元,但是解釋'和;
3、效率。能使單引號字元盡量使用單引號,單引號的效率比雙引號要高(因為雙引號要先遍歷一遍,判斷裡面有沒有變數,然後再進行操作,而單引號則不需要判斷)。
(1)php單引號轉義擴展閱讀:
一般情況下兩者是通用的。但雙引號內部變數會解析,而單引號則不解析。
PHP允許我們在雙引號串中直接包含字串變數。
而單引號串中的內容總被認為是普通字元,因此單引號中的內容不會被轉義效率更高。
比如:
$str = 'hello world';
echo "str is $str"; //運行結果: str is hello world
echo 'str is $str'; //運行結果: str is $str
② PHP中單引號與雙引號的區別分析
①轉義的字元不同
單引號和雙引號中都可以使用轉義字元(\),但只能轉義在單引號中引起來的單引號和轉義轉義符本身。如果用雙引號(「」)括起字元串,PHP懂得更多特殊字元串的轉義序列。
<?php
$str1
=
'\',\\,\r\n\t\v\$\"';
echo
$str1,'<br
/>';
$str2
=
"\",\\,a\r\n\tb\v\$\'";
echo
$str2,'<br
/>';
?>
②對變數的解析不同
單引號字元串中出現的變數不會被變數值替代。即PHP不會解析單引號中的變數,而是將變數名原樣輸出。雙引號字元串最重要的一點是其中的變數名會被變數值替代,即可以解析雙引號中包含的變數。
<?php
$age
=
20;
$str1
=
'I
am
$age
years
old';
$str2
=
"I
am
$age
years
old";
echo
$str1,'<br
/>';
//
I
am
$age
years
old
echo
$str2,'<br
/>';
//
I
am
20
years
old;
?>
③解析速度不同
單引號不需要考慮變數的解析,速度比雙引號快.推薦用單引號.有的時候雙引號也比較好用,比如在拼湊sql
語句
反斜杠
//使用單引號
echo
'
this
\n
is
\r
the
blog
\t
of
\\
zhoumanhe
\\';
//上面使用單引號輸出的值是
this
\n
is
\r
the
blog
\t
of
\
zhoumanhe
\
echo
'
';
echo
"
";
//使用雙引號
echo
"this
\n
is
\r
the
blog
\t
of
\\
zhoumanhe
\\";
//上面使用雙引號輸出的值是
this
is
the
blog
of
\
zhoumanhe
\
使用sql
假設查詢條件中使用的是常量,例如:
select
*
from
abc_table
where
user_name='abc';
SQL語句可以寫成:
SQLstr
=
「select
*
from
abc_table
where
user
_name=
『abc'」
;
假設查詢條件中使用的是變數,例如:
$user_name
=
$_REQUEST['user_name'];
//字元串變數
或
$user=array
(」name」=>
$_REQUEST['user_name『,"age"=>$_REQUEST['age'];//數組變數
SQL語句就可以寫成:
SQLstr
=
「select
*
from
abc_table
where
user_name
=
『
」
.
$user_name
.
」
『
「;
SQLstr
=
「select
*
from
abc_table
where
user_name
=
『
」
.
$user["name"]
.
」
『
「;
對比一下:
SQLstr=」select
*
from
abc_table
where
user_name
=
『
abc
『
」
;
SQLstr=」select
*
from
abc_table
where
user_name
='
」
.
$user
_name
.
」
『
「;
SQLstr=」select
*
from
abc_table
where
user_name
='
」
.
$user["name"]
.
」
『
「;
SQLstr可以分解為以下3個部分:
1:」select
*
from
table
where
user_name
=
『
」
//固定SQL語句
2:$user
//變數
3:」
『
」
附:大家也看到了
echo
'<br/>';
html中的標簽在單引號和雙引號中都有效。
總結一下PHP引號使用原則
1.字元串的值用引號
2.PHP中盡量用單引號,HTML代碼全部用雙引號
3.在包含變數的時候,用雙引號可以簡化操作
4.復雜的情況下用大括弧包起來
PHP引號還有一個用處就是,有的時候需要用php生成文本文件,換行符n需要用雙引號才能好使,單引號則會直接把n當成字元輸出。
使用總結:在字元串裡面不需要加入
變數
或者
單引號(')和反斜杠(\)
時,盡量用單引號引字元串,因為省去了雙引號檢查處理轉義和解析變數上面的時間。能用單引號盡量用單引號。
③ php 單雙引號與轉義的問題
在單引號串中反斜線失去了它的擴展含義(除了添入反斜杠\\和添入單引號\')。所以,當你想在字串中進行變數代換和包含\n(換行符)等轉義序列時,你應該使用雙引號。
所以單引號不會轉義,\\只是添加了一個\,這個類似\' 添加了一個單引號。
④ php中單引號和雙引號的區別,哪個速度更快為什麼
單引號更快。 1.在php中,單引號內的數據不會被解析(任何變數和特殊轉義字元),所以速度更快,而雙引號內的數據會被解析,如變數($var)值會代入字元串中,特殊轉義字元也會被解析成特定的單個字, 2.數組中,如果下標不是整型,而是字元串類型,請務必用單引號將下標括起,正確的寫法為$array[‘key’],而不是$array[key],因為不 正確的寫法會使PHP解析器認為key是一個常量,進而先判斷常量是否存在,不存在時才以key作為下標帶入表達式中,同時出發錯誤事件,產生一條 Notice級錯誤。
⑤ PHP 單引號,雙引號與轉義的問題
單引號和雙引號都會對字元串進行轉義。轉義是對內容的進行安全過濾。但而單雙號與雙引號主要的區別是在解析時有沒有進行變數解析。
⑥ PHP中的雙引號和單引號的應用
無論是書寫
JavaScript
還是
PHP,總習慣於使用單引號。但周末在家
coding
的時候碰到個問題,需要通過
PHP
過濾字元串中的換行符,按照下面的方法操作:
$out
=
str_replace(array('rn',
'r',
'n'),
'',
$out);PHP
提供三種定義字元串的方法:單引號、雙引號、本地文檔(英文叫做
here
document
或者
heredoc)。
單引號:
使用單引號是最高效的方法,因為
PHP
不會檢查單引號字元串中的內置變數和轉義序列,需要轉義的字元只有反斜杠和單引號本身。
雙引號:
會檢查內置變數和轉義序列,但不能識別轉義的單引號。這也正說明了開始那段代碼的錯誤之處,正確的做法是使用雙引號來定義換行的轉義序列:
$out
=
str_replace(array("rn",
"r",
"n"),
'',
$out);本地文檔:
檢查所有的內置變數和轉義序列,雙引號無需轉義。例如:
echo
<<
this
is
a
"here
document"
example.
just
for
test.
EOT;簡單記錄下,加深印象。
⑦ PHP表示字元串的單引號和雙引號有什麼區別
在PHP這類型語言中,沒有字元類型,只有字元串類型。單引號代表按原樣輸出。
比如'hello\r\n',輸出的就是hello\r\n。但如果是雙引號,則會對其中的轉義字元進行轉換。比如還是剛才的字元串,由於\r\n是換行標記,所以雙引號內的"hello\r\n"就會輸出hello後再換行。
⑧ 在php中,既可以使用單引號也可以使用雙引號來包圍字元串,二者沒有任何區別
您好,普通來看是沒有任何區別的,但是實質上是有區別的,在PHP中,字元串的定義可以使用英文單引號' ',也可以使用英文雙引號" "。一般情況下兩者是通用的.但雙引號內部變數會解析,單引號則不解析.PHP允許我們在雙引號串中直接包含字串變數。而單引號串中的內容總被認為是普通字元,因此單引號中的內容不會被轉義效率更高。比如:$str='hello';echo "str is $str"; //運行結果: str is helloecho 'str is $str'; //運行結果: str is $strphp中,雙引號中的變數($var)和特殊字元(\r\n之類)會被轉義,單引號中的內容不會被轉義(所以效率更高)。使用上的話,我以前很喜歡在sql字元串里這樣寫$sql = "SELECT * FROM table WHERE id = $id",這樣裡面的$id可以被轉義,單引號就不行。在JavaScript中 單引號 和雙引號沒有區別,只要成對使用就行。我在JavaScript 中使用單引號大多是因為 Javascript 和 HTML 打交道比較多,輸出 HTML 片段的時候不需要轉義 HTML 中屬性的引號。總之,看您的實際情況來用,怎麼方便怎麼使用。
⑨ php輸入一個單引號為何輸出一個斜杠
在為wordpress後台添加統計代碼控制功能時,發現凡是提交到資料庫的內容中只要是帶有單引號或者雙引號的內容時,後面都會增加一個反斜杠。而且每保存一次增加一個反斜杠,很是郁悶。
從網上搜了一下原來是PHP程序為了防止注入或者溢出,通過PHP 指令 magic_quotes_gpc自動在雙引號、單引號、反斜杠、NULL前面添加反斜杠「」。
統計代碼中自然是會帶有很多反斜杠的內容,這時候就要去掉添加的反斜杠。
默認PHP 指令 magic_quotes_gpc是on的,也就是打開的。這時候就可以用stripslashes() 函數刪除自動添加的反斜杠。用法就是:比如包含字元串的變數是$str,那麼就用stripslashes() 函數處理一下這個字元串:stripslashes($str),輸出的結果就是去掉反斜杠的。
於是我就把讀取的字元串內容用stripslashes()函數處理一下,即$value=stripslashes($str),再保存。上傳網站之後正常了。
但是又出現另外一個問題,那就是因為本地PHP 指令 magic_quotes_gpc是off的,如果用這個函數的話,就會把本來正常的反斜杠也去掉了。這樣就不是我們所希望的了。
解決辦法就是可以使用函數 get_magic_quotes_gpc() 進行檢測,如果是打開的狀態,那麼就去除反斜杠,如果是關閉的狀態,則不去除反斜杠。
程序代碼如下:
$str=$_POST["str"];//讀取str的內容賦值給$str變數
if(get_magic_quotes_gpc())//如果get_magic_quotes_gpc()是打開的
{
$str=stripslashes($str);//將字元串進行處理
}
對指定的函數進行修改於測試,發現斜杠不會再繼續添加了。
本篇轉自轉載: 品味人生