Замена функции

Тема в разделе "FAQ", создана пользователем Anatoliy_B, 23 май 2009.

Статус темы:
Закрыта.
  1. Anatoliy_B

    Anatoliy_B Постоялец

    Регистр.:
    17 июн 2008
    Сообщения:
    87
    Симпатии:
    0
    Здравствуйте. Вожусь 2 ночи, нет больше никаких сил. В php у меня познания очень маленькие, поэтому прошу помощи у Вас.

    Вобщем есть скрипт, берет из текстового файла текст, синонимизирует перестановкой слов (похоже что алгоритм Маркова), потом с этого текста генерит хтмл страницы. Вобщем проблоема такая. Эти все навороты нужно убрать. У меня не получилось
    Ниже привожду пример из 3х файлов (есть и другие, но они не относятся к вышеописанному. Но если вдруг понадобятся (хотя врятли) - выложу. Есть функция (коментарий есть), она грузит из тхт файла текст и пускает в генератор-синонимизатор. Нужно сделать так, чтобы скрипт брал текст из файла и сразу в таком виде вставлял на страницы, которые генерируются, и чтобы делил поровну а не рандомно. Надеюсь изложил понятно.

    Посмотреть вложение script.rar
     
  2. puika

    puika

    Регистр.:
    25 ноя 2006
    Сообщения:
    262
    Симпатии:
    277
    <?php



    // Создаем функцию с 2-мя обязательными

    // и одним новым необязательным параметром

    // с уже указанным значением по умолчанию

    function separator($file, $notes, $limit=0){



    // Загоняем всю инфу из файла в массив

    $file = file($file);

    // Получаем количество строк в файле

    $q = sizeof($file);

    // Делим кол-во строк на кол-во записей - получаем кол-во страниц

    // ! Если число не делится ровно, оно округлится по верхней границе (с избытком)

    // Для этого существует функция ceil()

    // В дальнейшем нам не нужно ставить (int) перед переменной

    $np = ceil($q/$notes);



    // Если в адресной строке есть $page, значит

    //нужно показать блок, соответсвующий значению $page

    if(isset($_GET['page']))

    {

    // Для удобства переименуем $_GET['page'] в $page

    $page = $_GET['page'];



    // Если $page больше, чем кол-во страниц, показываем последний блок

    if($page > $np) $page = $np;

    // Если вдруг значение $page отрицательно - выводим первый блок

    if($page <= 0) $page = 1;

    // Формулы начальной и конечной строки блока, вычислены опытнам путем

    $begin = $notes*($page-1);

    $end = $notes*$page-1;



    // Вывод данных

    for($i=$begin; $i<=$end; $i++)

    {

    if(isset($file[$i])) echo $file[$i].'<br>';

    }

    }



    // Если $page в адресной строке нет, то показываем 1-й блок

    else

    {

    // Если количество строк в файле меньше или равно допустимому

    // количеству, то просто выводим их и не паримся с постраничным

    // выводом, ибо нефига...

    if($q <= $notes)

    {

    for($i=0; $i<$q; $i++) {

    echo $file[$i].'<br>';

    }



    // Дальнейшее выполнение функции бессмыслено (все возможное выведено), поэтому выходим

    exit;

    }



    // А если больше, то выводим первый блок

    else

    {

    for($i=0; $i<$notes; $i++)

    {

    echo $file[$i].'<br>';

    }

    }

    }



    // Вывод навигации



    // Делаем пробел между выводимой информацией

    // и навигацией

    echo '<br>';



    // Если страница не первая (иначе нет смысла выводить

    // стрелки), то выводим стрелки "В начало" и "Предыдущая"

    if(isset($_GET['page']) && $_GET['page'] > 1){

    // Будет вернее писать $_SERVER['SCRIPT_NAME'], а не index.php, как было раньше

    echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page=1>&lt;&lt;</

    a> ';

    $prev = $_GET['page']-1;

    echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$prev.'>&lt;</

    a> ';

    }



    // Если параметр, ограничивающий длину выводимой

    // навигации не установлен или равен нулю, то выводим

    // навигацию как обычно

    if($limit == '0'){

    for($i=0; $i<$np; $i++){

    if(isset($_GET['page']) && $_GET['page'] == $i+1) echo '['.($i+1).'/'.$np.']';

    else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.($i+1).'>['.($i+1).']

    </a> ';

    }



    }else{

    // Самое интересное: ограничение выводимой навгиации

    if(!isset($_GET['page'])) $page=1;

    // Форумла начала "обрезанной" навигации (НОН)

    $begin = $page-$limit;

    // Формула конца "обрезанной" навигации (КОН)

    $end = $page+$limit;

    // Если НОН выходит за ноль, то можно не "обрезать" навигацию слева

    if($begin <= 0) $begin = 1;

    // Если КОН выходит за последнюю страницу, то можно не "орбезать" навигацию справа

    if($end > $np) $end = $np;

    // Если между 1-й страницей и НОН есть какие-то страницы, заменяем их на "..."

    if($begin > 1) echo "...";



    //Ну и сам вывод...



    for($i=$begin; $i<=$end; $i++){

    if(isset($_GET['page']) && $_GET['page'] == $i) echo '['.$i.'/'.$np.']';

    else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>['.$i.']</a&g

    t; ';

    }



    // Если между КОН и последней страницей есть какие-то страницы, заменяем их на "..."

    if($end < $np) echo "...";



    }

    // Вывод стрелок "Следующая" и "В конец"

    if(@$_GET['page'] < $np){

    $next = @$_GET['page']+1;

    echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$next.'>&gt;</

    a> ';

    echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$np.'>&gt;&gt

    ;</a> ';

    }

    }



    // Ну и вызов функции

    separator('file.txt', '10');

    ?>



    Настройки скрипта внизу кода:



    file.txt - неопсредственно текстовый файл для обработки.

    тут '10' - число строк на странице.



    Скрипт не мой, по случаю нашел

     
  3. Anatoliy_B

    Anatoliy_B Постоялец

    Регистр.:
    17 июн 2008
    Сообщения:
    87
    Симпатии:
    0
    Что-0то не понял для чего этот скрипт. ЧТобы разделить txt?? Мне нужно еще код поправить в приаттаченых файлах, убрать генератор...
     
  4. puika

    puika

    Регистр.:
    25 ноя 2006
    Сообщения:
    262
    Симпатии:
    277
    Берет текст из файла и делит его на страницы с навигацией
     
Статус темы:
Закрыта.