解析PHP處理換行符的問題 \r\n
更新時間:2013年06月13日 17:10:02 作者:
本篇文章是對PHP處理換行符的問題進行了詳細的分析介紹,需要的朋友參考下
一首先說說 \r 與\n的區(qū)別
回車”(Carriage Return)和“換行”(Line Feed)這兩個概念的來歷和區(qū)別。
在計算機還沒有出現(xiàn)之前,有一種叫做電傳打字機(Teletype Model 33,Linux/Unix下的tty概念也來自于此)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒里面,又有新的字符傳過來,那么這個字符將丟失。
于是,研制人員想了個辦法解決這個問題,就是在每行后面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。這就是“換行”和“回車”的來歷,從它們的英語名字上也可以看出一二。
后來,計算機發(fā)明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字符太浪費了,加一個就可以。于是,就出現(xiàn)了分歧。
Unix系統(tǒng)里,每行結尾只有“<換行>”,即"\n";Windows系統(tǒng)里面,每行結尾是“<換行><回車 >”,即“\n\r”;Mac系統(tǒng)里,每行結尾是“<回車>”,即"\n";。一個直接后果是,Unix/Mac系統(tǒng)下的文件在 Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
c語言編程時(windows系統(tǒng))
\r 就是return 回到 本行行首 這就會把這一行以前的輸出 覆蓋掉。
如: (注以下是C++代碼)
最后只顯示 xixi 而 hahaha 背覆蓋了
int main ()
{
cout << "hahaha" << "\r" << "xixi" ;
}
\n 是回車+換行 把光標 先移到 行首 然后換到下一行 也就是 下一行的行首拉
int main()
{
cout << "hahaha" << "\n" << "xixi" ;
}
二換行符的表現(xiàn)形式
在普通文件里如(.txt,.php等)換行符是"\r\n", "\n", "\r"。但表現(xiàn)在HTML文件里時(這里說明一下:HTML的TEXTAREA文本域里的換行也是"\r"或“\n”)是“<br/>”標簽。
使用PHP腳本可以進轉換。
代碼如下(來至PHP手冊):
//Order of replacement
$str="Line1\nLine2\rLine3\r\nLine4\n";
$order=array("\r\n","\n","\r");
$replace='<br/>';
$newstr=str_replace($order,$replace,$str);
回車”(Carriage Return)和“換行”(Line Feed)這兩個概念的來歷和區(qū)別。
在計算機還沒有出現(xiàn)之前,有一種叫做電傳打字機(Teletype Model 33,Linux/Unix下的tty概念也來自于此)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒里面,又有新的字符傳過來,那么這個字符將丟失。
于是,研制人員想了個辦法解決這個問題,就是在每行后面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。這就是“換行”和“回車”的來歷,從它們的英語名字上也可以看出一二。
后來,計算機發(fā)明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字符太浪費了,加一個就可以。于是,就出現(xiàn)了分歧。
Unix系統(tǒng)里,每行結尾只有“<換行>”,即"\n";Windows系統(tǒng)里面,每行結尾是“<換行><回車 >”,即“\n\r”;Mac系統(tǒng)里,每行結尾是“<回車>”,即"\n";。一個直接后果是,Unix/Mac系統(tǒng)下的文件在 Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
c語言編程時(windows系統(tǒng))
\r 就是return 回到 本行行首 這就會把這一行以前的輸出 覆蓋掉。
如: (注以下是C++代碼)
最后只顯示 xixi 而 hahaha 背覆蓋了
復制代碼 代碼如下:
int main ()
{
cout << "hahaha" << "\r" << "xixi" ;
}
\n 是回車+換行 把光標 先移到 行首 然后換到下一行 也就是 下一行的行首拉
復制代碼 代碼如下:
int main()
{
cout << "hahaha" << "\n" << "xixi" ;
}
二換行符的表現(xiàn)形式
在普通文件里如(.txt,.php等)換行符是"\r\n", "\n", "\r"。但表現(xiàn)在HTML文件里時(這里說明一下:HTML的TEXTAREA文本域里的換行也是"\r"或“\n”)是“<br/>”標簽。
使用PHP腳本可以進轉換。
代碼如下(來至PHP手冊):
復制代碼 代碼如下:
//Order of replacement
$str="Line1\nLine2\rLine3\r\nLine4\n";
$order=array("\r\n","\n","\r");
$replace='<br/>';
$newstr=str_replace($order,$replace,$str);
您可能感興趣的文章:
- PHP常用字符串操作函數(shù)實例總結(trim、nl2br、addcslashes、uudecode、md5等)
- 深入PHP nl2br()格式化輸出的詳解
- PHP字符串函數(shù)系列之nl2br(),在字符串中的每個新行 (\n) 之前插入 HTML 換行符br
- PHP nl2br函數(shù) 將換行字符轉成 <br>
- PHP按行讀取文件時刪除換行符的3種方法
- php 字符串中的\n換行符無效、不能換行的解決方法
- php去除換行(回車換行)的三種方法
- php中將html中的br換行符轉換為文本輸入中的換行符
- php去除換行符的方法小結(PHP_EOL變量的使用)
- php代碼中使用換行及(\n或\r\n和br)的應用
- PHP函數(shù)nl2br()與自定義函數(shù)nl2p()換行用法分析
相關文章
PHP獲取數(shù)組長度或某個值出現(xiàn)次數(shù)的方法
這篇文章主要介紹了PHP獲取數(shù)組長度或某個值出現(xiàn)次數(shù)的方法,實例分析了count()與array_count_value()的使用技巧,需要的朋友可以參考下2015-02-02使用Limit參數(shù)優(yōu)化MySQL查詢的方法
我們在做一些查詢的時候總希望能避免數(shù)據(jù)庫引擎做全表掃描,因為全表掃描時間長,而且其中大部分掃描對客戶端而言是沒有意義的。那么在 MySQL 中有那些方式是可以避免全表掃面的呢?除了我們大家很熟悉的通過使用索引列或分區(qū)等方式來進行查詢的優(yōu)化之外還有那些呢?2008-11-11PHP合并數(shù)組+與array_merge的區(qū)別分析
PHP中兩個數(shù)組合并可以使用+或者array_merge,但之間還是有區(qū)別的,而且這些區(qū)別如果了解不清楚項目中會要命的!2010-08-08php防止偽造數(shù)據(jù)從地址欄URL提交的方法
針對偽造的數(shù)據(jù)從URL提交的情況,首先是檢查前一頁來源,這個方法只能防止手動在瀏覽器地址欄上輸入的URL,目前覺得還是用POST的方法傳遞重要數(shù)據(jù)比較可靠2014-08-08