12

表示する前に最初の 4 行を削除する必要がある変数があります。

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

4 に答える 4

22

うーん。誰かが気の利いた/より短い/より良いものを思い付くだろうと確信していますが、どうですか:

$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 であることに気付かないかもしれません。

于 2009-04-16T23:52:58.730 に答える
4

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

于 2009-04-16T23:56:48.877 に答える
2

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 には、これら 2 つの改行が連続して見つかった後の文字列が含まれます。

于 2009-04-16T23:55:32.187 に答える
1

を使用して文字列を配列に分割しますsplit(rex)。ここで、rex2 つの連続する改行に一致し、最初の要素 (ヘッダー) を除いて配列全体を連結します。

于 2009-04-16T23:53:00.977 に答える