php雙引號轉義
1. 單引號和雙引號在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';
PHP允許我們在雙引號串中直接包含字串變數,單引號串和雙引號串在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語法分析器對單引號串 的處理方式比較單純,而雙引號的處理由於串內部也需要解析,因此更復雜些,所以處理速度略慢。 技術問題可到itjob技術交流群交流
2. php 單雙引號與轉義的問題
在單引號串中反斜線失去了它的擴展含義(除了添入反斜杠\\和添入單引號\')。所以,當你想在字串中進行變數代換和包含\n(換行符)等轉義序列時,你應該使用雙引號。
所以單引號不會轉義,\\只是添加了一個\,這個類似\' 添加了一個單引號。
3. PHP 單引號,雙引號與轉義的問題
單引號和雙引號都會對字元串進行轉義。轉義是對內容的進行安全過濾。但而單雙號與雙引號主要的區別是在解析時有沒有進行變數解析。
4. php轉義字元,這是什麼意思
\的意思是轉義
如果你雙引號里要出現雙引號是不行的,所以要轉義
比如:\"就是相當於'
(轉義雙引號等於單引號)
\'等於'
(轉義單引號等於單引號)
你這段的意思是:執行循環,次數為3次。循環輸出表格的列(align=\
"center
\設定為居中)。img是
圖片,scr是圖片位置,位置是數組
$pictures的第$i個(根據循環次數來定)
echo
"
\
"
/></td>";
\
"
/>是img的結束標記
</td>是列的結束標記
不過我感覺程序有點問題。。
5. php中的echo的雙引號為什麼要轉義
假如你的文件是以「.php」為結尾的話,正常情況下是不需要轉義符的。但如果你是在一段已經有雙引號("")包圍的代碼中間插入如:<?php echo "<a onclick=\"href(1)\"> 連接</a>"; ?>類似的代碼,確實有可能需要轉義符。
6. 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;簡單記錄下,加深印象。
7. php 單引號和雙引號的區別
1、變數。雙引號解釋變數,單引號不解釋變數;雙引號里插入單引號,其中單引號里如果有變數的話,變數解釋;
2、字元。雙引號解釋轉義字元,單引號不解釋轉義字元,但是解釋'和;
3、效率。能使單引號字元盡量使用單引號,單引號的效率比雙引號要高(因為雙引號要先遍歷一遍,判斷裡面有沒有變數,然後再進行操作,而單引號則不需要判斷)。
(7)php雙引號轉義擴展閱讀:
一般情況下兩者是通用的。但雙引號內部變數會解析,而單引號則不解析。
PHP允許我們在雙引號串中直接包含字串變數。
而單引號串中的內容總被認為是普通字元,因此單引號中的內容不會被轉義效率更高。
比如:
$str = 'hello world';
echo "str is $str"; //運行結果: str is hello world
echo 'str is $str'; //運行結果: str is $str
8. php中怎麼把json雙引號前加上轉義符\
通過AJAX傳到PHP的json字元串有時候加上反斜杠」\」來轉義,PHP處理時需要先去掉反斜杠,然後再json_decode.
$str = stripslashes($_POST['json']);
$arr = json_decode($str,true);
PS:php get抓取json怎樣去除雙引號前面的反斜杠
你這個不算標準的JSON格式數據,可以先將\"替換成"即可。
再用json_decode()系統函數將其轉為json對象,如需轉為數組加上第二個參數為true即可。
若仍輸出為NULL,是由於存在BOM頭信息,
復制代碼 代碼如下:
$arr = json_decode(trim($json,chr(239).chr(187).chr(191)),true);
轉換即可。
本文全部內容介紹完了,希望對大家在使用PHP去掉json字元串中的反斜杠\及去掉雙引號前的反斜杠中有所幫助。
9. 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當成字元輸出。
使用總結:在字元串裡面不需要加入
變數
或者
單引號(')和反斜杠(\)
時,盡量用單引號引字元串,因為省去了雙引號檢查處理轉義和解析變數上面的時間。能用單引號盡量用單引號。