我有一个新的行字符字符串。我想把这个字符串转换成一个数组,对于每一个新行,在数组中跳转一个索引位置。
如果字符串是:
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
)
当前回答
我在PHP文档中找到了这个:
<?php
// Split the phrase by any number of commas or space characters,
// which include " ", \r, \t, \n and \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>
其他回答
使用: $数组= preg_split (' / \ s * \ R \ s * /”,削减(文本)美元,NULL, PREG_SPLIT_NO_EMPTY);
这对我来说效果最好,因为它还自动消除了前导(第二个\s*)和尾导(第一个\s*)空白,还跳过空行(PREG_SPLIT_NO_EMPTY标志)。
选项
如果你想保留前导空白,只需去掉第二个\s*,改为rtrim()…
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
如果你需要保留空行,去掉NULL(它只是一个占位符)和PREG_SPLIT_NO_EMPTY标志,就像这样…
$array = preg_split('/\s*\R\s*/', trim($text));
或者同时保留前导空格和空行……
$array = preg_split('/\s*\R/', rtrim($text));
我看不出有什么理由你会想要保留后面的空格,所以我建议把第一个\s*留在那里。但是,如果你想要的只是按新行分割(正如标题所暗示的那样),就是这么简单(正如Jan Goyvaerts所提到的)…
$array = preg_split('/\R/', $text);
只使用'base'包也是简单情况下的解决方案:
> s <- "a\nb\rc\r\nd"
> l <- strsplit(s,"\r\n|\n|\r")
> l # the whole list...
[[1]]
[1] "a" "b" "c" "d"
> l[[1]][1] # ... or individual elements
[1] "a"
> l[[1]][2]
[1] "b"
> fun <- function(x) c('Line content:', x) # handle as you wish
> lapply(unlist(l), fun)
你不需要preg_*函数、preg模式、str_replace within等,就可以通过换行成功地将字符串分解为数组。在所有场景中,无论是Linux、Mac还是Windows,这都可以。
<?php
$array = explode(PHP_EOL, $string);
// ...
$string = implode(PHP_EOL, $array);
?>
PHP_EOL是一个常量,保存服务器平台使用的换行符。
PHP已经知道当前系统的换行符。只用EOL常数。
explode(PHP_EOL,$string)
换行符在不同的平台上有不同的定义,\r\n, \r或\n。
使用RegExp分割字符串,您可以用\R匹配所有三个字符串
对于你的问题:
$array = preg_split ('/$\R?^/m', $string);
这将与Windows, Mac和Linux上的换行符匹配!