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

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

  • vitalys

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

    Spritz 7 марта 2009 г. 2: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 7 марта 2009 г. 2:34, спустя 23 минуты 3 секунды

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

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

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

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

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

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

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

    Spritz 7 марта 2009 г. 12: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 г. 22: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 9 марта 2009 г. 0:49, спустя 2 часа 4 минуты 13 секунд

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

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

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

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

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

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

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


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

    тогда так

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

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

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

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

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

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

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

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

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

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

    по делу:

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

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

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

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

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

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

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

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

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

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


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

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

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

    
    Дата 6|Заголовок 6|Новость 6
    Дата 5|Заголовок 5|Новость 5
    
    
    
    Дата 4|Заголовок 4|Новость 4
    
    
    
    Дата 3|Заголовок 3|Новость 3
    
    Дата 2|Заголовок 2|Новость 2
    Дата 1|Заголовок 1|Новость 1
    

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

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