Такая проблема, решил разбивку текстового файла на строки преобразовать на разбивку на символы. В итоге у меня последний символ режит пополам. Если текстовый файл на английском то символов столько, сколько указал, если на русском то в два раза меньше. Вот код: Код (PHP): <?php // Читаем txt файл // //$kom = file("$basicf/$_SESSION[filename]"); $kom = file_get_contents("$basicf/$_SESSION[filename]"); // Всего строк // //$all = count($kom); // Всего симолов // $all = mb_strlen($kom, "UTF-8"); // Количество строк на странице // //$pnumber = 20; // Количество символов на странице // $pnumber = 2000; // Номер страницы // $paget = (isset($_GET["paget"])) ? (int)$_GET["paget"] : 1; // Число страниц // $num_pages = ceil($all / $pnumber); // Начальная позиция // $start = $paget * $pnumber - $pnumber; // Более последней // if ($paget > $num_pages) { $paget = $num_pages; $start = $num_pages * $pnumber - $pnumber; } // Менее первой // if ($paget < 1) { $paget = 1; $start = 0; } // Только цифры // if (preg_match("/[^0-9]/", $_GET["paget"])) { $paget = 1; $start = 0; } // Шапка // include "$inc/header.inc.php"; echo '<div class="d">'; // Элементы выводятся в обратном порядке!! // // for ($i = $all - $start - 1; $i >= $all - $start - $pnumber; $i--) // Элементы выводятся не в обратном порядке!! // $end = $paget * $pnumber; for ($i = $start; $i < $end; $i++) { if (!isset($kom[$i])) break; // Строки // echo str_replace("\n", "<br />", htmlspecialchars($kom[$i])); } echo '</div>'; // Если страниц больше, чем 1 // if ($all > $pnumber) { // Сохранение данных в сессии // $_SESSION["paget"] = $paget; // Страницы // echo '<div class="d">'; for ($pr = '', $i = 1; $i <= $num_pages; $i++) { echo $pr = (($i == 1 || $i == $num_pages || abs($i - $paget) < 2) ? ($i == $paget ? " [$i] " : ' [url="'.$_SERVER['SCRIPT_NAME'].'?paget='.$i.'"]'.$i.'[/url] ') : (($pr == ' ... ' || $pr == '')? '' : ' ... ')); } echo '<br /></div>'; } ?>