PHP逸出字元有關問題

來源:互聯網
上載者:User
PHP逸出字元問題
在網上,搜到了很多文章,上面都說:
以單引號為定界符的php字串,支援2個轉義:\\, \'
以雙引號為定界符的php字串,支援8個轉義:\\, \", \r, \n, \t, \$, \[0-7]{1,3}, \x[0-9A-Fa-f]{1,2}
但實際操作中,並不是這樣子,對單引號和雙引號,addshlashes()都會進行轉義,以下例為證,有人意見相左嗎?
以下是測試結果:
$single_quote_str = '\'單引號\'內之 "雙引號" 測試.';
$double_quote_str = "\"雙引號\"內之'單引號'測試.";

單引號測試:
原始輸出字串='單引號'內之 "雙引號" 測試.
轉義字串=\'單引號\'內之 \"雙引號\" 測試.
還原字串='單引號'內之 "雙引號" 測試.
雙引號測試:
原始輸出字串="雙引號"內之'單引號'測試.
轉義字串=\"雙引號\"內之\'單引號\'測試.
還原字串="雙引號"內之'單引號'測試.

分享到: 更多


------解決方案--------------------
你先要明白為什麼會有轉義一說
當用單引號括起的字串中有單引號時,如 'ab'c'
當用雙引號括起的字串中有雙引號時,如 "ab"c"
你說這個字串是到 b 就結束了,還是要到 c 才結束呢?
弄不清了吧?這就是因為'(")二義性造成了歧義
於是為瞭解決這個歧義,引入了轉義的概念。而字元\一般不會出現在本文中,所以就用它作為轉義符
'ab\'c'、"ab\"c" 中 \'、\" 使得引號失去引號的含義,而只被當做普通的字元
\r、 \n、\t 使得字母r、n、t失去了其字母的含義,而被當做 ascii 碼的 斷行符號、換行、定位字元

雖然 \ 在本文裡很少出現,但還是有可能出現的。所以就用 \\ 來使 \ 失去轉義的作用


------解決方案--------------------
string addslashes ( string str )


返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字元)。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.