[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбиение текстища на текстики
Crater
Вот код:
while (!feof($fp)){
$a++;
$mytext = '';
$i = 0;
while($i<1100){
$i++;
$gy = fgetc($fp);
$myc .= $gy;
if ($gy == ".") {
$mytext .= $myc;
$myc = '';
}
}

$save_file = "books/".$_POST['num']."_".$a.".php";
$fopa = fopen($save_file, "w");
fwrite($fopa, $mytext);
fclose ($fopa);
echo '<br> Page '.$a.' is true!';
}

Итак, нужно разделить один файл на несколько. Конкретно дан .txt. Текст нужно разделить на примерно равные части по принципу "не больше 1100 символов, но до точки". Вот только в моём случае почему-то встречаются на выходе файлы, имеющие и по 1300 символов, чего быть вообще не должно. Почему так происходит? Как это исправить? Может кто видит? :unsure:



Спустя 30 минут, 24 секунды (1.12.2010 - 04:28) dr_Lev написал(а):
если исходный файл не большой, то можно и так :
$text = file_get_contents($fileName);
$texts = explode('.',$text);
$i = 0;
$newText = '';
foreach($texts as $text){
if ((strlen($text) + strlen($newText))>=1100){
$save_file = "books/".$_POST['num']."_".$i.".php";
file_put_contents($save_file, $newText);
$newText = $text.'.';
$i++;
}else{
$newText.= $text.'.';
}
}


Спустя 30 минут, 23 секунды (1.12.2010 - 04:58) Crater написал(а):
dr_Lev
хм, неплохо. файл может варьироваться от 1000 символов до... ну, до целого тома. Но всё же едва ли больше метра займёт. Сейчас попробую.

Спустя 10 минут, 6 секунд (1.12.2010 - 05:09) kirik написал(а):
Цитата (Crater @ 30.11.2010 - 20:58)
файл может варьироваться от 1000 символов до... ну, до целого тома.

file_get_contents тогда не пойдет.. памяти не хватит на целый том smile.gif

Спустя 13 минут, 11 секунд (1.12.2010 - 05:22) Crater написал(а):
kirik
Да, про это слышал. Но 45 кб текстик разбил на ура. 46 страниц вышло. В принципе, тома можно и на части делить. Страницы всё равно по 1100 символов, а это тысяча страниц на том... Словом, с любой стороны неудобно.
dr_Lev
Спасибо, дружище! Дай расцелую laugh.gif Работает. И по моим прикидкам даже порезвее прежнего. Единственное - пришлось добавить так нравящееся мне Page '.$a.' is true! smile.gif

Спустя 1 день, 2 часа, 26 минут, 46 секунд (2.12.2010 - 07:49) Crater написал(а):
Поторопился я с выводами. Если интересно, сколько может прочесть этот скрипт - как раз чуть больше 40 кб. Для кода самое оно. Для книги совсем немного. Придётся дорабатывать, чтобы можно было удобно в два шага загружать.

Спустя 1 час, 20 минут, 12 секунд (2.12.2010 - 09:09) kirik написал(а):
Цитата (Crater @ 1.12.2010 - 23:49)
Для книги совсем немного. Придётся дорабатывать, чтобы можно было удобно в два шага загружать.

Вытаскивай просто с помощью fgets куски по 1100 байт и обрезай до последней точки. А оставшийся кусок сохраняй во временную переменную и присоединяй к следующему куску.

Спустя 11 часов, 59 минут, 49 секунд (2.12.2010 - 21:09) Crater написал(а):
Я снова поторопился с вводамии. Внимательно посмотрел и увидел, что если последняя страница не достигает нужного размера (а на то она и последняя, что его не достигает), то она не записывается. А я решил, что это скрипт обрывается. В общем спать мне больше надо smile.gif


_____________
Цитата
Я не потерпел неудачу. Я просто нашел десять тысяч способов, которые не работают.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.