我想在第一个换行符处拆分一个字符串,而不是第一个空白行
'/^(.*?)\r?\n\r?\n(.*)/s'
(第一个空行)
例如,如果我有:
$ str ='2099测试\ n你确定你 想要继续\ n其他一些字符串 这里...';
match[1] = '2099 test'
match[2] = 'Are you sure you want to continue\n some other string here...'
答案 0 :(得分:11)
preg_split()
有一个限制参数,您可以利用它。你可以简单地做:
$lines = preg_split('/\r\n|\r|\n/', $str, 2);
答案 1 :(得分:6)
<?php
$str = "2099 test\nAre you sure you want to continue\n some other string here...";
$match = explode("\n",$str, 2);
print_r($match);
?>
返回
Array
(
[0] => 2099 test
[1] => Are you sure you want to continue
some other string here...
)
explode的最后一个参数是你想要将字符串拆分成的元素数。
答案 2 :(得分:1)
通常只需删除\r?\n
:
'/^(.*?)\r?\n(.*)/s'
答案 3 :(得分:1)
答案 4 :(得分:1)
第一行换行:
$match = preg_split('/\R/', $str, 2);
第一行空白
$match = preg_split('/\R\R/', $str, 2);
处理换行符的所有各种方式。
还有一个关于第二个换行符拆分的问题。这是我的实现方式(可能不是最有效的方法。也请注意,它用PHP_EOL
代替了一些换行符)
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);
答案 5 :(得分:0)
也许你甚至不需要使用正则表达式。要获得分割线,请参阅:
What's the simplest way to return the first line of a multi-line string in Perl?