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.
Antworten
Zu viele Anzeigen?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...)
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);
}