Php 第一次换行时的正则表达式拆分字符串

Php 第一次换行时的正则表达式拆分字符串,php,regex,Php,Regex,我希望在第一个换行符拆分字符串,而不是在第一个空行拆分字符串 “/^(.*)\r?\n\r?\n(.*))/s”(第一个空行) 例如,如果我有: $str='2099测试\n您确定 要继续\n其他字符串吗 这里……’ 通常只需在\r?\n上删除: '/^(.*?)\r?\n(.*)/s' preg_split()。你可以简单地做: $lines = preg_split('/\r\n|\r|\n/', $str, 2); 您可以使用preg\u split作为: $arr = preg_sp

我希望在第一个换行符拆分字符串,而不是在第一个空行拆分字符串

/^(.*)\r?\n\r?\n(.*))/s”
(第一个空行)

例如,如果我有:

$str='2099测试\n您确定 要继续\n其他字符串吗 这里……’


通常只需在
\r?\n
上删除:

'/^(.*?)\r?\n(.*)/s'
preg_split()。你可以简单地做:

$lines = preg_split('/\r\n|\r|\n/', $str, 2);

您可以使用
preg\u split
作为:

$arr = preg_split("/\r?\n/",$str,2);

也许你甚至不需要使用正则表达式。要仅获取分割线,请参见:

explode的最后一个参数是要将字符串拆分成的元素数。

第一行分隔符:

$match = preg_split('/\R/', $str, 2);
第一个空行:

$match = preg_split('/\R\R/', $str, 2);
处理进行换行的所有不同方式

还有一个关于在第二次换行时拆分的问题。这是我的实现(可能不是最有效的…还要注意,它用
PHP\u EOL
替换了一些换行符)


+1用于使用字符串操作而不是正则表达式。如果可能,几乎总是更好。不起作用。您要求preg_split返回大小为1的数组。我刚才注意到了错误。更正。还有一个问题,是否可以在第二个换行符而不是第一个换行符处也这样做?这里的所有答案要么使用正则表达式,要么使用一些奇怪的perl特定文件I/O重定向。
Array
(
    [0] => 2099 test
    [1] => Are you sure you want to continue
 some other string here...
)
$match = preg_split('/\R/', $str, 2);
$match = preg_split('/\R\R/', $str, 2);
function split_at_nth_line_break($str, $n = 1) {
    $match = preg_split('/\R/', $str, $n+1);
    if (count($match) === $n+1) {
        $rest = array_pop($match);
    }
    $match = array(implode(PHP_EOL, $match));
    if (isset($rest)) {
        $match[] = $rest;
    }
    return $match;
}

$match = split_at_nth_line_break($str, 2);