简单,是吧?嗯,这是行不通的:-\
$skuList = explode('\n\r', $_POST['skuList']);
简单,是吧?嗯,这是行不通的:-\
$skuList = explode('\n\r', $_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);
其他回答
这个PHP函数用换行符拆分字符串 注意:Windows中的新行是\r\n, Linux和Unix中的新行是\n 这个函数将所有新行更改为Linux模式,然后将其拆分。注意,空行将被忽略
function splitNewLine($text) {
$code=preg_replace('/\n$/','',preg_replace('/^\n/','',preg_replace('/[\r\n]+/',"\n",$text)));
return explode("\n",$code);
}
例子
$a="\r\n\r\n\n\n\r\rsalam\r\nman khobam\rto chi\n\rche khabar\n\r\n\n\r\r\n\nbashe baba raftam\r\n\r\n\r\n\r\n";
print_r( splitNewLine($a) );
输出
Array
(
[0] => salam
[1] => man khobam
[2] => to chi
[3] => che khabar
[4] => bashe baba raftam
)
try
explode(chr(10), $_POST['skuList']);
试试这个:
explode(PHP_EOF, $lines);
对于一条新线来说,这只是
$list = explode("\n", $text);
对于一个新的行和回车(就像在Windows文件中一样),它就像你发布的那样。你的skuList是一个文本区域吗?
如果内容可能在系统外部生成,那么系统使用什么作为换行符并不重要。
在收到所有这些答案后,我很惊讶,没有人简单地建议使用\R转义序列。只有一种方法可以让我考虑在自己的项目中实现它。\R提供了最简洁和直接的方法。
https://www.php.net/manual/en/regexp.reference.escape.php # ~:短信=线% 20break: 20matches % 20 \ n % 20, r 20and % 20 \ r \ n
代码:(演示)
$text = "one\ntwo\r\nthree\rfour\r\n\nfive";
var_export(preg_split('~\R~', $text));
输出:
array (
0 => 'one',
1 => 'two',
2 => 'three',
3 => 'four',
4 => '',
5 => 'five',
)