我有一个像下面这样的变量,我希望一个函数只保留前20行,所以它会剥离超过20行的任何额外\ n行。
<?php
$mytext="Line1
Line2
Line3
....."
keeptwentyline($mytext);
?>
答案 0 :(得分:8)
我认为(可能有点愚蠢^^)解决方案是:
explode
将字符串转换为行数组array_slice
implode
那些回到字符串中。
这样的事情就符合这个想法:
var_dump(keepXlines($mytext, 5));
function keepXLines($str, $num=10) {
$lines = explode("\n", $str);
$firsts = array_slice($lines, 0, $num);
return implode("\n", $firsts);
}
注意:我将行数作为参数传递 - 这样,该函数可以在别处使用;-)
如果未给出参数,则采用默认值:10
但可能会有一些聪明的方式^^
(那可能需要qiute一些内存,将字符串复制到数组中,提取第一行,重新创建字符串......)
答案 1 :(得分:8)
function keeptwentyline($string)
{
$string = explode("\n", $string);
array_splice($string, 20);
return implode("\n", $string);
}
或(可能更快)
function keepLines($string, $lines = 20)
{
for ($offset = 0, $x = 0; $x < $lines; $x++) {
$offset = strpos($string, "\n", $offset) + 1;
}
return substr($string, 0, $offset);
}