我有一个变量,在显示之前需要去掉前四行:
Error Report Submission
From: First Last, email@example.com, 12345
Date: 2009-04-16 04:33:31 pm Eastern
The content to be output starts here and can go on for any number of lines.
在将其作为“待处理错误报告”视图的一部分显示之前,我需要从这个数据中删除“header”。
恩,我确信会有人提出更好/更短/更优雅的解决方案,不过这可能可以行得通:
$str = implode("\n", array_slice(explode("\n", $str), 4));
如果那看起来太不雅观,你可以将其抽象化:
function str_chop_lines($str, $lines = 4) {
return implode("\n", array_slice(explode("\n", $str), $lines));
}
$str = str_chop_lines($str);
编辑:经过再三思考,我不建议使用str_chop_lines
函数,除非您计划在应用程序的多个部分中使用它。我认为原始的一行代码已经足够清晰,而任何碰巧遇到str_chop_lines
的人可能没有意识到默认值是4,除非去查看函数定义。
$content = preg_replace("/^(.*\n){4}/", "", $content);
Strpos非常有用:以下是一个例子:
// $myString = "blah blah \n \n \n etc \n \n blah blah";
$len = strpos($myString, "\n\n");
$string = substr($myString, $len, strlen($myString) - $len);
$string 然后包含在找到这两个换行符后的字符串。使用split(rex)
将字符串拆分为数组,其中rex
匹配两个连续的换行符,然后连接整个数组,除了第一个元素(即标题)。