3 Stimmen

PHP, wie begrenzt man Zeilen in einem String?

Ich habe eine Variable wie folgt und möchte eine Funktion, die nur die ersten 20 Zeilen behält und alle zusätzlichen \n-Zeilen mehr als 20 entfernt.

10voto

Pascal MARTIN Punkte 384469

Ich nehme an, eine (vielleicht etwas dumme ^^ ) Lösung wäre folgende:

  • explode den String in ein Array von Zeilen
  • Behalten Sie nur die X ersten Zeilen, zum Beispiel mit array_slice
  • implode diese wieder zu einem String.

So etwas würde dieser Idee entsprechen:

var_dump(keepXlines($mytext, 5));

function keepXLines($str, $num=10) {
    $lines = explode("\n", $str);
    $firsts = array_slice($lines, 0, $num);
    return implode("\n", $firsts);
}

Hinweis: Ich habe die Anzahl der Zeilen als Parameter übergeben - so kann die Funktion anderswo verwendet werden ;-)
Und wenn der Parameter nicht angegeben ist, nimmt er den Standardwert: 10

Aber es könnte vielleicht einen cleveren Weg geben ^^

(das wird wahrscheinlich ziemlich viel Speicher brauchen, um den String in ein Array zu kopieren, die ersten Zeilen zu extrahieren, einen neuen String zu erstellen...)

8voto

Andy Punkte 16773
function keeptwentyline($string)
{
     $string = explode("\n", $string);
     array_splice($string, 20);
     return implode("\n", $string);
}

Oder (wahrscheinlich schneller)

function keepLines($string, $lines = 20)
{
    for ($offset = 0, $x = 0; $x < $lines; $x++) {
        $offset = strpos($string, "\n", $offset) + 1;
    }

    return substr($string, 0, $offset);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X