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

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

当前回答

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

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

or

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

其他回答

以下是对我有效的方法。在PHP 5.6和PHP 7.0中测试:

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

    $skuList = preg_split("/\n/", $skuList);
    print_r($skuList);

把\n放在双引号中:

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

在单引号中,如果我没有记错的话,它被分别视为\和n。

对于一条新线来说,这只是

$list = explode("\n", $text);

对于一个新的行和回车(就像在Windows文件中一样),它就像你发布的那样。你的skuList是一个文本区域吗?

从输入文本框中发布时丢失换行符? 对我来说,更快的工作是复制粘贴任何文本或Excel或HTML表格类型或换行数据类型,并将其粘贴到文本区域而不是输入文本框: 这使得换行符在POST中保持完整。

 <textarea  id="txtArea" name="txtArea" rows="40" cols="170"></textarea>
 <br>
 <input type="submit" value="split lines into array" /> 

表单接收文件中:

 $txtArea ='';  
 $txtArea = $_POST['txtArea'];  
 $TA = $_POST['txtArea'];  
 $string = $TA;  
 $array = preg_split ('/$\R?^/m', $string); 
// or any of these: 
// $array = explode(PHP_EOL,$string);  
// $array = explode("\n", $txtArea); 
 echo "<br>A0: ".$array[0];
 echo "<br>A1: ".@$array[1];
 echo "<br>A2: ".@$array[2];

看起来很简单

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

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