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);