php 用fwrite函式寫檔案時字元轉義問題

2021-06-19 19:12:07 字數 677 閱讀 9981

用php指令碼寫檔案時不會很少碰到轉義字元的問題,頂多是單引號和雙引號交換使用就可以解決,今天我通過web頁面生成.php檔案時碰到了字元被轉義的問題,
由於web頁面有預覽功能,因此將生成的php檔案內容用ajax展示在頁面上,在提交表單時將頁面上顯示的內容(為字串)帶到action層處理,此時,由於這個內容字串在html中轉了一圈,所以直接用fwrite函式生成為檔案時,
單引號  『  成了   \',左尖括號  <  成了  $lt;  右尖括號  > 成了  $gt;
看了手冊發現有個函式stripslashes() 可以防止轉義,因此在生成檔案時可以單引號就不會被轉義,仍是 ' ,但是這個函式防止轉義的特殊字元不包括尖括號,因為

stripslashes()

函式只是去掉預定義字元前的反斜槓,而尖括號被轉義後不是加反斜槓,所以這個函式對$lt;不起作用,後百般尋找,終於發現htmlspecialchars_decode()可以把轉義的字元轉化為實體字元, $lt; 成為 < 左尖括號, $gt; 成為 > 右尖括號,

最後,要生成檔案的字串就可以用以上兩個函式防止字元轉義了 stripslashes(htmlspecialchars_decode($str))

用fread()和fwrite()讀寫檔案

ansi c檔案系統提供fread 和fwrite 兩個函式,用於讀 寫長於一位元組的資料型別。這兩個函式允許讀 寫各種型別的資料塊。它們的原型是 size t fread void buffer,size t num bytes,size t count,file fp size t fwrite...

檔案操作之fread函式和fwrite函式

資料塊寫函式 fwritesize t fwrite const void restrict ptr,size t size,size t nitems,file restrict stream 資料塊寫函式 freadsize t fread void restrict ptr,size t si...

用函式寫幾道題。

1.實現乙個函式,列印乘法口訣表,口訣表的行數和列數自己指定,輸入9,輸出99口訣表,輸入12,輸出1212的乘法口訣表。define crt secure no warnings include includevoid mul int n 自定義的乘法函式。int main 2.使用函式實現兩個數...