PHP fwrite換行寫入時換行符不起作用的原因
阿新 • • 發佈:2019-01-04
我們在使用fwrite寫入檔案時,新手會遇到一個最常見但又必須解決的問題,那就是換行寫入。
php的換行符我們都知道:\n ,回車符:\r,在需要換行時,通常是用“\r\n”這個組合。但是為什麼我們在使用fwrite寫入檔案時\n換行符不起作用呢。我們先看下面這個例子:
<?php
$filename = 'file.txt' ;
$word = '你好!\r\n歡迎來到www.webkaka.com' ;
$fh = fopen ( $filename , "a" ); //w從開頭寫入 a追加寫入
echo fwrite( $fh , $word );
fclose( $fh );
?>
|
$word的字串內加上了回車換行符“\r\n”,但是輸出結果並不是預期,這個回車換行符“\r\n”並沒有被解析為換行符,而是直接被當作一個字元輸出來了。
為什麼會出現這樣的情況呢?經研究,原來是單雙引號惹的禍!我們把$word定義字串的單引號“'”換為雙引號“"”就可以了。正確的寫法如下:
$filename = 'file.txt' ;
$word = "你好!\r\n歡迎來到www.webkaka.com" ;
$fh = fopen ( $filename , "a" ); //w從開頭寫入 a追加寫入
echo fwrite( $fh , $word );
fclose( $fh );
|
題外話,上述例子裡echo fwrite()顯示的一個數字,這個數字表示字串的長度。
知識擴充
用雙引號(")定義字串,PHP 懂得更多特殊字元的轉義序列:
轉移序列說明
\n換行
\r回車
\t水平製表符
\[/td>反斜線
\$美元符號
\"雙引號
\[0-7]{1,3}此正則表示式序列匹配一個用八進位制符號表示的字元
\x[0-9A-Fa-f]{1,2}此正則表示式序列匹配一個用十六進位制符號表示的字元