我有一个新的行字符字符串。我想把这个字符串转换成一个数组,对于每一个新行,在数组中跳转一个索引位置。
如果字符串是:
My text1
My text2
My text3
我想要的结果是:
Array
(
[0] => My text1
[1] => My text2
[2] => My text3
)
我有一个新的行字符字符串。我想把这个字符串转换成一个数组,对于每一个新行,在数组中跳转一个索引位置。
如果字符串是:
My text1
My text2
My text3
我想要的结果是:
Array
(
[0] => My text1
[1] => My text2
[2] => My text3
)
当前回答
换行符在不同的平台上有不同的定义,\r\n, \r或\n。
使用RegExp分割字符串,您可以用\R匹配所有三个字符串
对于你的问题:
$array = preg_split ('/$\R?^/m', $string);
这将与Windows, Mac和Linux上的换行符匹配!
其他回答
你可以使用爆炸函数,使用“\n”作为分隔符:
$your_array = explode("\n", $your_string_from_db);
例如,如果你有这样一段代码:
$str = "My text1\nMy text2\nMy text3";
$arr = explode("\n", $str);
var_dump($arr);
你会得到这样的输出:
array
0 => string 'My text1' (length=8)
1 => string 'My text2' (length=8)
2 => string 'My text3' (length=8)
注意,必须使用双引号字符串,因此\n实际上被解释为换行符。 (详情请参阅手册页。)
explode("\n", $str);
"(而不是')非常重要,否则换行符不会被解释。
你可以用这个:
\str_getcsv($str, PHP_EOL);
我一直都很成功地使用这个方法:
$array = preg_split("/\r\n|\n|\r/", $string);
(更新为最后的\r,谢谢@LobsterMan)
你不需要preg_*函数、preg模式、str_replace within等,就可以通过换行成功地将字符串分解为数组。在所有场景中,无论是Linux、Mac还是Windows,这都可以。
<?php
$array = explode(PHP_EOL, $string);
// ...
$string = implode(PHP_EOL, $array);
?>
PHP_EOL是一个常量,保存服务器平台使用的换行符。