按新行分解 PHP 字符串

php
2022-08-30 06:02:50

很简单,对吧?好吧,这不起作用:-\

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

答案 1

最佳实践

如第一个答案的注释中提到的,最佳做法是使用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']);

答案 2

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

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

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

推荐