删除前四行从存储在内容顶部的可变

问题描述:

我已被显示,需要前剥离出来前四行一个变量:删除前四行从存储在内容顶部的可变

Error Report Submission 
From: First Last, [email protected], 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. 

我需要从这个数据中去除“标头”然后将其显示为“待处理错误报告”视图的一部分。

嗯。我肯定有人会拿出一些漂亮的/短/更好,但如何:

$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,而没有进入函数定义。

+0

我相信你的第一个例子是在容易一眼,理解它的意思不是其他1线的解决方案更快。 'plus uno':P – alex 2009-04-17 00:12:20

+0

是的,起初我认为它很丑,但我认为它很清楚它的作用。 – 2009-04-17 00:20:29

使用split(rex)将字符串拆分为数组,其中rex匹配两个连续的换行符,然后连接整个数组,除第一个元素(它是头)外。

Strpos帮助了很多:下面是一个例子:那么

// $myString = "blah blah \n \n \n etc \n \n blah blah"; 

$len = strpos($myString, "\n\n"); 
$string = substr($myString, $len, strlen($myString) - $len); 

$字符串包含在一排发现这两个新行后的字符串。

$content = preg_replace("/^(.*\n){4}/", "", $content);