2013-09-20 2 views
2

Хорошо, у меня есть цифровая книга из 30 000 строк. Я хочу показать только первые 20 строк главы в качестве предварительного просмотра, каждая глава получила 300 строк.Получение строк из длинного текста

Кто-нибудь знает, как это решить? Я попробовал следующее:

foreach ($lines as $n => $line) { 
    if ($n >= 0 && $n =< 20) { 
    echo $line; 
    } 

Это приведет к отображению первых 20 строк первой главы. Итак, как я могу повторить это для всех других строк?

показать 0-20 показать 300-320 показать 600-620 показать 900-920 и т.д ..

Заранее спасибо!

+0

Проверьте PHP max_execution_time: http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time – SaidbakR

+1

@ sємsєм Кто сказал что-нибудь о тайм-ауте? – Stijn

+0

@Stijn Это просто своего рода предсказание, когда вы переходите через линии 30K, вы должны это учитывать. – SaidbakR

ответ

1

Просто нашел ответ сам на ранее С.О. вопрос:

foreach ($lines as $n => $line) { 
    if ($n % 300 > 0 && $n % 100 <= 20) { 
     echo $line; // or whatever 
    } 
} 

На основании ответа, написанной Майклом Берковский (PHP read in every 10 out of 100 lines)

+0

И посмотрите на свои настройки памяти в config;) –

1

Для печати главе 5

$chapter = 5; 
$pages = 20; 
$start = $chapter*$pages; 
for($i=$start, $c=$start+$pages-1; $i < $c; $i++) 
{ 
    echo $lines[$i]; 
} 
2

Вы можете сделать это с:

$rgChapters = []; 
$rFile  = fopen('/path/to/file', 'r'); 
$iLines  = 20; 
$iChapter = 300; 
$i   = 0; 
while($sData = fgets($rFile) && !feof($rFile)) 
{ 
    if($i % $iChapter < $iLines) 
    { 
     $rgChapters[floor($i/$iChapter)].=$sData.PHP_EOL; 
    } 
    $i++; 
} 
fclose($rFile); 

-как результат, вы получите массив с первых 20 строк каждые 300 строк (или вы можете непосредственно выходные данные, а не хранить его в массиве)

+0

похоже overkill. '$ lines = explode (" \ n ", file_get_contents (...));' – cgTag

+0

@MathewFoscarini yeah ... Я посмотрю, что произойдет, если эти 30.000 строк будут 10Mb для каждой строки: p (и как для ' explode' + 'file_get_contents' - отличная опция будет' файл' тогда) –

+0

true, но мы не знаем о части для чтения. ОП пытается сделать вид, и чтение должно быть сделано в другом месте. может быть из базы данных? – cgTag

Смежные вопросы