На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > Вопрос по чату №2 :-( , Как читать из файла по строчкам используя "\n" ?
      ПЛИИЗ!!! Помогите!
      Скриптю чат... Записываю значит в файл сообщение, (поставил фильтр на ХТМЛ, поэтому юзаю "\n") какая функция отвечает за чтение из файла по строчно? Или каким макаром это можно сделать??? Я уже месяц голову над этим ломаю, млин =(((

      ИСХОДНИКИ:

      Запись в файл:
      ExpandedWrap disabled
         
        <?php
        ....
        ...
        ....
        ..
        //Если пользователь не забанен
        If ($ban == 0)
        {
        //Счётчик сообщений
        $query = "SELECT Counter FROM chat";
        $result = mysql_query($query);
        $count = mysql_result($result, 0, "Counter");
         
        //Если кол-во сообщений привысило 60 или равно 60-ти, то очистить файл перед записью
        If ($count >= 60)
        {
            $query = "UPDATE chat SET Counter=0";
            mysql_query($query);
            $count = 0;
            $fp = fopen("msg.txt", "w+");
        }
        //Или же если в файле сообщений меньше 60-ти, прочесть из файла сообщение и записать в файл обычным методом.
        Else
        {
        //Открытие файла сообщений
        $fpr = fopen("msg.txt", "r");
         
        while (! feof($fpr))
        {
        $s = fgets($fpr);
        }
        fclose($fpr);
            $fp = fopen("msg.txt","a");
        }
         
        //Увеличить счётчик кол-ва сообщений на 1
        $count++;
         
        $query_up_count = "UPDATE chat SET Counter='$count'";
        mysql_query($query_up_count);
         
         
        //Добавка сообщения в файл
        $message = ">[".$time_hour.":".$time_minutes.":".$time_seconds."]&nbsp".$login.":&nbsp".$info."\n";
        fputs($fp, $message);
        fclose($fp);
        }//Ban
         
        //Возврат пользователя к вводу сообщений
        header("Location: chat.php");
        ?>



      Вывод сообщений:
      ExpandedWrap disabled
        <?php
         
        //Открыть файл для чтения
        $fp = fopen("msg.txt", "r");
        while (! feof($fp))
        {
        $message = fgets($fp);
        }
         
        //Фильтрация HTML и JavaScript тэгов
        $message = nl2br(htmlspecialchars($message));
         
        fclose($fp);
        echo ($message);
        ?>



      Помогите ПОЖАЛУЙСТА!!! :wall: :wall: :wall: :wall: :'( :wacko:
        А если так?
        ExpandedWrap disabled
           
          <?
          $file=file("blablabla.dat");
          for ($i=0;$i<count($file);$i++)
           echo $file[$i]."<br>";
          ?>
          2Mastillor:

          УРА!!! ЗАРАБОТАЛО!!!
          Хы-хы! Ещё раз УРА!!! Спасибо! Спасибо! Спасибо!!!!

          +)))
          Блин, и я вот над этой фигнёй месяц потел... фуф.... =((( Тупая же у меня бошка всё таки =(

          ЕЩЁ РАЗ СПАСИБКИ!
          БИГ РЕСПЕКТ!!!
          Сообщение отредактировано: Splanger -
            Слушай... А как теперь тогда фильтр ХТМЛ тэгов вставить???
              Splanger,
              ты можешь не использовать Капс Лок , и создать новую тему по поводу ХТМЛ ( а перелд етим воспользоватся поиском )
                Splanger, за чтение файла построчно отвечает функция fgets() или fread(). Я только не понимаю, почему у тебя строки читаются в пустоту? Тебе разве работать с ними не нужно?
                ExpandedWrap disabled
                  $fp = fopen('file.dat', 'r');
                  while(!feof($fp))
                  {
                    $line = fgets($fp);
                    // Над $line нужно какие-то действия производить, иначе мы просто пропускаем строку
                  }
                  fclose($fp);

                Или если ты читаешь все сообщения в одну переменную, используешь оператор .=
                ExpandedWrap disabled
                   
                  $full_text = '';
                  $fp = fopen('file.dat', 'r');
                  while(!feof($fp))
                  {
                    $full_text .= fgets($fp);
                  }
                  fclose($fp);
                  echo $full_text;

                Еще советую использовать \r\n вместо \n, чтобы не было курьезов с Windows.

                Куда тебе нужно фильтр тэгов вставить?

                А вообще, не помешало бы обзавестить какой-нибудь книгой по PHP или мануалом.
                  Цитата
                  Splanger,
                  ты можешь не использовать Капс Лок , и создать новую тему по поводу ХТМЛ ( а перелд етим воспользоватся поиском )


                  Я и не использую капс лок... Я поиском пользовался, ничего так и не нашёл

                  Добавлено в :
                  Цитата
                  почему у тебя строки читаются в пустоту

                  Тоесть?

                  Добавлено в :
                  Цитата
                  Тебе разве работать с ними не нужно

                  Мне нужно короче что бы фильтровались все ХТМЛ тэги, но выводилось всё по строчкам...

                  Добавлено в :
                  Цитата
                  Куда тебе нужно фильтр тэгов вставить?

                  При выводе сообщений мне фильтр нужно поставить, что бы юзер не мог использовать хмтл тэги.
                    Вывод Сообщений:
                    ExpandedWrap disabled
                      <?
                      $fp = fopen('msg.txt', 'r');
                      while(!feof($fp))
                      {
                        $line = fgets($fp);
                        echo nl2br(htmlspecialchars($line));
                      }
                      fclose($fp);
                      ?>
                      О, Всё работает!
                      Тенкс!
                        Ещё вопрос:
                        Каким образом при выводе на сообщения на экран я могу заменять некоторые символы картинками?
                          Можно на РНР, а можно и на JS.
                          PHP:
                          ExpandedWrap disabled
                             
                            <?
                            $smiles = array(
                             ':)' => '<img src="1.gif" />',
                             ';)' => '<img src="2.gif" />',
                             ':\'(' => '<img src="3.gif" />',
                            );
                            $message = strtr($message, $smiles);
                            ?>

                          JS:
                          ExpandedWrap disabled
                             
                            function strtr(str, what, _with) {
                               var temp = '';
                               if (typeof(_with) != 'undefined')
                               {
                                  var t = what;
                                  var what = new Array();
                                  what[t] = _with;
                               }//if
                              
                               for (var _what in what)
                               {
                                  temp = '';
                                  for (var i = 0; i < str.length; i++)
                                  {
                                     var sub = str.substr(i, _what.length);
                                     if (typeof(what[sub]) != 'undefined')
                                     {
                                        temp += what[sub];
                                        i += _what.length - 1;
                                     }//if
                                     else {
                                        temp += str.charAt(i);
                                     }//else
                                  }//for
                                  str = temp;
                               }//for
                              
                               return temp;
                            }//function
                             
                            var smiles = new Array();
                            smiles[':)'] = '<img src="1.gif" />';
                            smiles[';)'] = '<img src="2.gif" />';
                            smiles[':\'('] = '<img src="3.gif" />';
                             
                            var message = 'Hello:) How are you;)';
                            message = strtr(message, smiles);
                          Сообщение отредактировано: SergeS -
                            Спасибо за предоставленую помощь,
                            Премного благодарен.

                            А насчёт скрипта смайликов на PHP...
                            Что делает функция :
                            ExpandedWrap disabled
                              strtr($message, $smiles);

                            Можно по подробнее пожалуйста? Хотелось бы изьять также полезную информацию себе на будущее из пхп скриптов.
                              Функция strtr() переводит одни символы в другие. Вообще-то, у нее три аргумента, но Rom@nych предпочел воспользоваться ассоциативным массивом. Таким образом, она заменяет в строке $message все иконки смайликов на тэги img.
                                Splanger,
                                а ето что ?

                                Цитата
                                Splanger, 16.08.04, 00:02
                                УРА!!! ЗАРАБОТАЛО!!


                                Цитата
                                Splanger, 16.08.04, 00:02
                                ЕЩЁ РАЗ СПАСИБКИ!
                                БИГ РЕСПЕКТ!!!
                                  Цитата
                                  Splanger,
                                  а ето что ?


                                  Ничего особого =))

                                  Цитата
                                  Функция strtr() переводит одни символы в другие. Вообще-то, у нее три аргумента, но Rom@nych предпочел воспользоваться ассоциативным массивом. Таким образом, она заменяет в строке $message все иконки смайликов на тэги img.

                                  TnX!
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0369 ]   [ 15 queries used ]   [ Generated: 1.05.24, 05:13 GMT ]