Удалите первые четыре строки сверху в содержимом, хранящемся в переменной
У меня есть переменная, для которой нужно удалить первые четыре строки перед отображением:
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.
Мне нужно удалить "заголовок" из этих данных, прежде чем я покажу его как часть представления "ожидающие сообщения об ошибках".
Ответы
Ответ 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
соответствует двум последовательным символам новой строки, а затем объедините весь массив, за исключением первого элемента (который является заголовком).