Удалить первые четыре строки сверху в содержимом, хранящемся в переменной - PullRequest
12 голосов
/ 17 апреля 2009

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

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.

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

Ответы [ 4 ]

22 голосов
/ 17 апреля 2009

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

$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, без перехода к определению функции.

4 голосов
/ 17 апреля 2009

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

2 голосов
/ 17 апреля 2009

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

1 голос
/ 17 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...