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>标签