PHP как ограничить строки в строке?

У меня есть переменная, подобная следующей, и я хочу, чтобы функция сохраняла только первые 20 строк, поэтому она будет удалять любые дополнительные \ n строки более 20.

<?php $mytext="Line1 Line2 Line3 ....." keeptwentyline($mytext); ?> 

Я полагаю, что решение (возможно, немного немое ^^) будет состоять в следующем:

  • explode строку в массив строк
  • сохраняйте только первые строки X, используя, например, array_slice
  • implode их обратно в строку.

Что-то вроде этого соответствовало бы этой идее:

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

Примечание. Я передал количество строк в качестве параметра – таким образом, эту функцию можно использовать в другом месте 😉
И если параметр не задан, он принимает значение по умолчанию: 10

Но может быть какой-то умный способ ^^

(что, вероятно, потребуется qiute некоторой памяти, чтобы скопировать строку в массив, извлечь первые строки, заново создать строку …)

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

Или (возможно, быстрее)

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