ФорумПрограммированиеPHP для идиотов → Пустые строки при чтении файла

Пустые строки при чтении файла

  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 6 марта 2009 г. 15:11

    Собственно, сначала мой скрипт, чтобы было понятнее:
    <?php 
    $base="news/news.txt"; // Файл где находиться инфа

    $general=file($base); //Заносим весь наш файл в массив

    $lines_file=file($base); //Еще разочек занесем наш файли в массив :-)

    $lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.

    $pmessages = file("$base");

    $onlyg=5; //Сколько записей выводить на страницу

    /*

    Тут начинаеться самая главная часть нашего файла
    Просчитываем странички :-)


    */
    $page=($_GET['page']);
    if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
    {
    $page = "1"; //Тогда переменнная $page=1
    }

    $first = count($pmessages) - ($onlyg * ($page - 1));
    $second = count($pmessages) - ($onlyg * $page) + 1;

    if ($second < 1)
    {
    $second = 1;
    }

    $pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц

    for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
    //1 и пока она меньше или равна $pages увеличиваем ее на единичку.
    {
    if ($onlyg != $page) //Если $olyg не равняется $page
    {
    //То наши ссылки имеют такой вид
    $zline .= "[ <a href=\"index.php?page=$onlyg\" class='forw'>$onlyg</a> ]";
    }
    if ($onlyg == $page) //А если равняеться
    {
    //То такой
    $zline .= "[ <font class='forw'><u>$onlyg</u></font> ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
    }
    }


    /*

    Теперь выводим саму информацию

    */
    for ( $i = $first-1; $i >= $second-1; $i–)
    {
    $mess = explode("|",$general[$i]);  

    $id = $i;
    $id++;
    //ну а дальше уже выводим наши данные
    echo "<img src='img/mini/info.gif' border='0' width='14' height='14'>&#38;nbsp;<font class='newsdate'>$mess[0]</font> &#38;nbsp;&#38;nbsp;&#38;nbsp; <b>$mess[1]</b><br>$mess[2]<br><br>\n";


       }  
    echo "<center>$zline<br>"; //Выводим ссылки

    echo "<font class='txt'>Новостей: <b>$lines</b></font></center>"; //Выведем информацию пользователю о общем количестве записей
    ?>


    А теперь насущный вопрос - как сделать так, чтобы считались (и выводились) только НЕпустые строки?

    P.S. Заранее - огромнейшее спасибо. Мудохаюсь 3й час, не вижу выхода… (с php знаком очень издалека:()
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 6 марта 2009 г. 15:34, спустя 23 минуты 3 секунды

    сразу после того как считал файл в массив, пройдись по нему циклом и удали все пустые эдемеленты (http://ru.php.net/unset)

    $general=file($base); //Заносим весь наш файл в массив 
    $lines_file=file($base); //Еще разочек занесем наш файли в массив :-)
    $pmessages = file("$base");

    — это, пардон, пиздец
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 7 марта 2009 г. 0:51, спустя 9 часов 16 минут 36 секунд

    такое чувство, что код по кускам был скопипастен…. код ваще пиздец
    неудивительно что мудохаешся 3й час
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 7 марта 2009 г. 1:14, спустя 22 минуты 44 секунды


    $general=file($base); //Заносим весь наш файл в массив 
    $lines_file=file($base); //Еще разочек занесем наш файли в массив :-)
    $pmessages = file("$base");

    — это, пардон, пиздец

    поддерживаю

    function blank_lines($var) {
       return !!$var;
    }

    $array = array ('', 2, '', 4, 5);

    print_r(array_filter($array, "blank_lines"));
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 8 марта 2009 г. 12:45, спустя 1 день 10 часов 31 минуту

    <?php 
    $base="news/news.txt"; // Файл где находиться инфа

    $gen=file($base); //Заносим весь наш файл в массив

    function Clear_array_empty($gen)
    {
    $general = array();
    foreach($gen as $val)
    {
    if (!empty($val))
    {
    $general[] = trim($val);
    }
    }
    return $general;
    }

    Clear_array_empty($gen);

    $lines_file=file($base); //Еще разочек занесем наш файли в массив :-)

    $lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.

    $pmessages = file("$base");

    $onlyg=5; //Сколько записей выводить на страницу

    /*

    Тут начинаеться самая главная часть нашего файла
    Просчитываем странички :-)


    */
    $page=($_GET['page']);
    if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
    {
    $page = "1"; //Тогда переменнная $page=1
    }

    $first = count($pmessages) - ($onlyg * ($page - 1));
    $second = count($pmessages) - ($onlyg * $page) + 1;

    if ($second < 1)
    {
    $second = 1;
    }

    $pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц

    for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
    //1 и пока она меньше или равна $pages увеличиваем ее на единичку.
    {
    if ($onlyg != $page) //Если $olyg не равняется $page
    {
    //То наши ссылки имеют такой вид
    $zline .= "[ <a href=\"index.php?page=$onlyg\" class='forw'>$onlyg</a> ]";
    }
    if ($onlyg == $page) //А если равняеться
    {
    //То такой
    $zline .= "[ <font class='forw'><u>$onlyg</u></font> ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
    }
    }


    /*

    Теперь выводим саму информацию

    */
    for ( $i = $first-1; $i >= $second-1; $i–)
    {
    $mess = explode("|",$general[$i]);

    $id = $i;
    $id++;
    //ну а дальше уже выводим наши данные
    echo "<img src='img/mini/info.gif' border='0' width='14' height='14'>&nbsp;<font class='newsdate'>$mess[0]</font> &nbsp;&nbsp;&nbsp; <b>$mess[1]</b><br>$mess[2]<br><br>\n";


    }
    echo "<center>$zline<br>"; //Выводим ссылки

    echo "<font class='txt'>Новостей: <b>$lines</b></font></center>"; //Выведем информацию пользователю о общем количестве записей
    ?>


    Не работает :( А хотелось бы.
    Знаю, что ошибаюсь, но не знаю, где…

    P.S. Sorry, за дятлизм, но форум для новичков, всетаки…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 8 марта 2009 г. 14:49, спустя 2 часа 4 минуты 13 секунд

    да вы все тут пиздец.

    $withoutblank = array_filter(array_map("trim",$lines));
    Сапожник без сапог
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 8 марта 2009 г. 15:29, спустя 40 минут 32 секунды

    Гррр… посл. вариант не работает. Trim… он же пробелы убирает. А не пустые строки. :(
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 8 марта 2009 г. 15:31, спустя 1 минуту 21 секунду


    Гррр… посл. вариант не работает. Trim… он же пробелы убирает. А не пустые строки. :(
    привык считать строки с одними пробелами - пустыми.

    тогда так

    $withoutblank = array_filter($lines);
    Сапожник без сапог
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 8 марта 2009 г. 15:40, спустя 9 минут 44 секунды

    все равно считает (и выводит) несколько пустых новостей. :(
    чтобы было понятнее, файл вида:
    дата|заглавие|новость
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 10 марта 2009 г. 14:39, спустя 1 день 22 часа 59 минут

    всё равно что то не то. Выводит пустые новости… :(
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 10 марта 2009 г. 14:58, спустя 18 минут 8 секунд

    TC, код – просто Полный пиздец

    по делу:


    $withoutblank = preg_grep("#^\s*$#",$lines,PREG_GREP_INVERT);

    не сдавайсо :)
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 10 марта 2009 г. 22:50, спустя 7 часов 52 минуты 15 секунд

    гррррр :( не воркает, все равно пустые выводит, сцобако
  • kirik

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 10 марта 2009 г. 22:55, спустя 5 минут 6 секунд

    Для кого флаг FILE_SKIP_EMPTY_LINES придумывали?
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 10 марта 2009 г. 23:07, спустя 11 минут 42 секунды


    гррррр :( не воркает, все равно пустые выводит, сцобако
    файл прикрепи сюда :)
  • vitalys

    Сообщения: 12 Репутация: N Группа: Кто попало

    Spritz 11 марта 2009 г. 5:36, спустя 6 часов 29 минут 35 секунд


    Дата 6|Заголовок 6|Новость 6
    Дата 5|Заголовок 5|Новость 5



    Дата 4|Заголовок 4|Новость 4



    Дата 3|Заголовок 3|Новость 3

    Дата 2|Заголовок 2|Новость 2
    Дата 1|Заголовок 1|Новость 1

    А это не в идеале :D

Пожалуйста, авторизуйтесь, чтобы написать комментарий!