Excluir primeiras quatro linhas da parte superior em teor armazenados numa variável
Pergunta
Eu tenho uma variável que precisa as primeiras quatro linhas retirados antes de serem exibidos:
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.
Eu preciso remover o 'header' a partir destes dados antes de exibi-lo como parte de um 'pendente relatórios de erros' vista.
Solução
Mmm. Estou certo de que alguém vai vir com algo bacana / menor / mais agradável, mas como sobre: ??
$str = implode("\n", array_slice(explode("\n", $str), 4));
Se isso é muito feio, você pode sempre abstrato-lo:
function str_chop_lines($str, $lines = 4) {
return implode("\n", array_slice(explode("\n", $str), $lines));
}
$str = str_chop_lines($str);
Editar : Pensando sobre isso um pouco mais, eu não recomendaria usar a função str_chop_lines
a menos que você planeja fazer isso em muitas partes do seu aplicativo. O one-liner original está bastante claro, penso eu, e qualquer um tropeço em cima str_chop_lines
pode não perceber o padrão é 4 sem ir para a definição da função.
Outras dicas
$content = preg_replace("/^(.*\n){4}/", "", $content);
strpos ajuda de um lote: Aqui está um exemplo:
// $myString = "blah blah \n \n \n etc \n \n blah blah";
$len = strpos($myString, "\n\n");
$string = substr($myString, $len, strlen($myString) - $len);
$ string então contém a cadeia depois de encontrar essas duas novas linhas em uma linha.
Dividir a cadeia numa matriz usando split(rex)
, onde rex
corresponde duas mudanças de linha consecutivas, e, em seguida, concatenar toda a matriz, excepto para o primeiro elemento (que é o cabeçalho).