Подтвердить что ты не робот

Удалите первые четыре строки сверху в содержимом, хранящемся в переменной

У меня есть переменная, для которой нужно удалить первые четыре строки перед отображением:

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.

Мне нужно удалить "заголовок" из этих данных, прежде чем я покажу его как часть представления "ожидающие сообщения об ошибках".

4b9b3361

Ответ 1

Ммм. Я уверен, что кто-то придумает что-нибудь отличное/короткое/приятное, но как насчет:

$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);

EDIT: подумав об этом, я бы не рекомендовал использовать функцию str_chop_lines, если вы не планируете делать это во многих частях приложения. Я думаю, что оригинальный однострочный ящик достаточно ясен, и любой, кто наткнулся на str_chop_lines, может не понимать, что по умолчанию 4, не переходя к определению функции.

Ответ 2

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

Ответ 3

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 затем содержит строку после нахождения этих двух строк в строке.

Ответ 4

Разделите строку в массив с помощью split(rex), где rex соответствует двум последовательным символам новой строки, а затем объедините весь массив, за исключением первого элемента (который является заголовком).