PHP是一種廣泛應用于Web開發的編程語言,在此過程中,我們不可避免地會與輸入和輸出數據打交道。在使用PHP中有一種基礎的輸入方法,一個被廣泛使用的函數 `input()`,它與PHP的核心關系密切,而且在使用中也具有普適性。然而,有時在使用堆疊多個輸入時,我們需要注意PHP input的換行問題。
在使用PHP input時,我們需要注意,不同的換行符可能帶來不同的影響。假設我們給一個文本框命名為“txt”,代碼如下:
<input type="text" name="txt">當我們以以下方式來test,也就是先使用代碼將輸入的文本存入一個變量中,再使用`echo`輸出:
$val = $_POST['txt']; echo $val;當輸入值為“First Line\nSecond Line”,在Windows下的輸出結果如下:
First Line Second Line與我們期望的結果不同,因為實際上代碼并沒有按照 `\n` (LF)的方式工作。這是由于Windows中使用描述為`\r\n`(CR LF)的換行符,而PHP解釋器以`\r`為標記,因此當代碼執行并輸出它時,它僅將“\r”解釋為一個標記并將其省略。這導致第一行輸出完之后,緊接著輸出第二行。因此,PHP input和換行的關系在這里暴露了不同操作系統之間的不同之處。 與Windows不同,UNIX / Linux和MAC在分別使用`\n`和`\r`用于換行符。以Linux為例。在一個真實的輸入測試中,如果我們輸入“First Line\nSecond Line“,我們可以得到以下結果:
First Line Second Line從輸出結果中可以看出,我們得到的輸出是按照我們預期的方式工作的。因此,使用PHP input時,需要考慮操作系統的不同指令,以確保正確顯示換行符。 如何避免輸入輸出中的這種差異?有兩種解決方案可供選擇。第一種方法是使用以下函數來標準化換行符:
$val = $_POST['txt']; $val = str_replace(chr(13), "", $val); // 先將"\r"替換為空串 echo str_replace(chr(10), "這種方法將換行符統一轉換為在HTML中顯示為< br>標簽,而不管操作系統或換行符。因此,使用這種方法可確保不加區分地在任何系統下都能正確顯示并輸出。 另一種解決方案是在`
", $val); // 再將"\n"替換為< br>標簽