PHP addcslashes() 函數的手冊頁給出了以下示例:addcslashes($not_escaped, "\0..\37!@\177..\377");轉義 0 到 31 之間的所有 ASCII 字符(= 037 八進制)。用戶建議進行以下改進:addcslashes($not_escaped, "\0..\37!@\@\177..\377");“保護原始的、無辜的反斜杠免受 stripcslashes 的侵害”。是否有關于參數格式的文檔charlist?!@具體來說,第一個例子中的序列和!@\@第二個中的序列的解釋是什么?
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
我花了一些時間才找到明顯的東西。
!@ 不是特殊序列,它們是應該轉義的單個字符。addcslashes 的唯一特殊輸入是用于范圍的char..char 。
\0..\37!@\177..\377 轉義范圍0..\37,字符! , 字符@和范圍\177..\377
!@\@
在我看來, 建議無效(不干凈)。\@
在 php 中沒有被屏蔽(它后面沒有像 \n 那樣的特殊含義)并且它將是相同的。所以 \ 和 @(第二次)被添加到字符列表中。這背后沒有魔法,也沒有特殊的順序。當你想轉義所有不可打印的字符(0-37 和 177+)時,@、!、\ 的干凈解決方案是:
"\0..\37!@\\\177..\377"
- 1 回答
- 0 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消