PHP: Bir değişken depolanan içerik üstten ilk dört satırları silin

4 Cevap php

Görüntülenen önce dışarı çıkardı ilk dört satır gereken bir değişken var:

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.

Ben 'bekleyen hata raporları' görüşünün bir parçası olarak görüntülemek için önce bu verilerden 'başlığı' kaldırmak gerekir.

4 Cevap

Mmm. Birisi şık / kısa / güzel bir şey ile gelip gidiyor eminim, ama nasıl:

$str = implode("\n", array_slice(explode("\n", $str), 4));

Bu çok çirkin ise, her zaman soyut uzak yapabilirsiniz:

function str_chop_lines($str, $lines = 4) {
    return implode("\n", array_slice(explode("\n", $str), $lines));
}

$str = str_chop_lines($str);

EDIT: Eğer uygulama birçok yerinde bu yapmayı düşünmüyorsanız bu konuda biraz daha düşünmek, ben str_chop_lines fonksiyonunu kullanarak tavsiye etmem. Orijinal one-liner yeterince açıktır, sanırım, ve üzerine tökezleyerek kimse str_chop_lines varsayılan işlev tanımının gitmeden 4 olduğunu farkında olmayabilir.

Strpos çok yardımcı oluyor: İşte bir örnek:

// $myString = "blah blah \n \n \n etc \n \n blah blah";

$len = strpos($myString, "\n\n"); 
$string = substr($myString, $len, strlen($myString) - $len);

$ String daha sonra arka arkaya bu iki satırsonu bulduktan sonra dizesini içerir.

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

rex iki ardışık satırsonu maçlar, ve sonra (başlığıdır) ilk elemanı hariç tüm dizi, birleştirmek split(rex) kullanarak bir dizi halinde dize bölmek.