Excluir primeiras quatro linhas da parte superior em teor armazenados numa variável

StackOverflow https://stackoverflow.com/questions/758488

  •  09-09-2019
  •  | 
  •  

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.

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top