简单,是吧?嗯,这是行不通的:-\

$skuList = explode('\n\r', $_POST['skuList']);

当前回答

最佳实践

正如第一个答案的注释中提到的,最佳实践是使用PHP常量PHP_EOL,它表示当前系统的EOL(行结束)。

$skuList = explode(PHP_EOL, $_POST['skuList']);

PHP提供了许多其他非常有用的常量,您可以使用这些常量使您的代码独立于系统,请参阅此链接以查找有用且独立于系统的目录常量。

警告

这些常量使您的页面系统独立,但是当您将这些常量用于存储在另一个系统上的数据时,从一个系统转移到另一个系统时可能会遇到问题。新系统的常数可能与以前的系统不同,存储的数据可能不再工作。因此,在存储数据之前完全解析数据,以删除任何与系统相关的部分。

更新

Andreas的评论让我意识到我在这里提出的“最佳实践”解决方案并不适用于所描述的用例:服务器的EOL (PHP)与浏览器(任何操作系统)正在使用的EOL没有任何关系,但(浏览器)是字符串的来源。

所以请使用@Alin_Purcaru的解决方案来覆盖你所有的基础:

$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);

其他回答

首先,我认为通常是\r\n,其次,这些在所有系统中都不一样。这只对窗口有效。试图弄清楚如何替换新行有点烦人,因为不同的系统对它们的处理不同(见这里)。你可能会有更好的运气只\n。

涵盖所有情况。不要依赖于您的输入来自Windows环境。

$skuList = preg_split("/\\r\\n|\\r|\\n/", $_POST['skuList']);

or

$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);

PHP_EOL表面上用于以跨平台兼容的方式查找换行符,因此它可以处理DOS/Unix问题。

试试这个:

$myString = "Prepare yourself to be caught
You in the hood gettin' shot
We going throw hell of blows
got my whole frame froze";

$myArray = explode(PHP_EOL, $myString);

print_r($myArray);

最佳实践

正如第一个答案的注释中提到的,最佳实践是使用PHP常量PHP_EOL,它表示当前系统的EOL(行结束)。

$skuList = explode(PHP_EOL, $_POST['skuList']);

PHP提供了许多其他非常有用的常量,您可以使用这些常量使您的代码独立于系统,请参阅此链接以查找有用且独立于系统的目录常量。

警告

这些常量使您的页面系统独立,但是当您将这些常量用于存储在另一个系统上的数据时,从一个系统转移到另一个系统时可能会遇到问题。新系统的常数可能与以前的系统不同,存储的数据可能不再工作。因此,在存储数据之前完全解析数据,以删除任何与系统相关的部分。

更新

Andreas的评论让我意识到我在这里提出的“最佳实践”解决方案并不适用于所描述的用例:服务器的EOL (PHP)与浏览器(任何操作系统)正在使用的EOL没有任何关系,但(浏览器)是字符串的来源。

所以请使用@Alin_Purcaru的解决方案来覆盖你所有的基础:

$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);

看起来很简单

$skuList = explode('\\n', $_POST['skuList']);

你只需要传递准确的文本“\n”,直接写“\n”被用作转义序列。输入"\\"传递一个简单的反斜杠然后输入"n"