За последние 24 часа нас посетили 17683 программиста и 1655 роботов. Сейчас ищут 890 программистов ...

Вопрос по парсингу текста ...

Тема в разделе "PHP для новичков", создана пользователем bogong, 28 июн 2010.

  1. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Доброго времни суток ...
    Нужна помощь начинающему ...
    Передо мно стоит задача: есть текст в текстовом файле, это набор системных данных которые нужно пропарсить (благо они заранее были разделены тэгами) и засунуть в мускульную базу ... Как это можно сделать и куда соваться за мануалами ...???
    Пытался делать через вот что (заранее извините за неграмотность кода, это второй скрипт который я пишу в свое жизни):

    PHP:
    1. <?php
    2.  
    3.         $dict=file_get_contents("dict1.txt");
    4.         $begin=strpos($dict, "<ar>");
    5.         $end=strpos($dict, "</ar>");
    6.         $result=substr($dict, $begin, $end);
    7.         echo $result;
    8.  
    9.  ?>
    В результате выдает все данные содержащиеся в файле ..., про стыковку с мускулом пока речи не шло, с этим бы разобраться ..., может кто расскажет в чем мой "косяк"?

    Иными словами мне нужно сделать вот что:
    1. Взять файл размером около 100Mb
    2. Найти в нем кусок текста ограниченного тэгами, и вырезать его из исходника.
    3. Вырезку пропарсить и положить в мускул по разным ячейкам.

    Ура разобрался ...!!! Заработало!!!
    Все дело было в том, что в моем тексте присутствовали тэги HTML ..., и PHP их не хотел видеть ... Спасло добавление функции htmlspecialchars и соответственное изменение значений в strpos ... Итоговый код такой:


    PHP:
    1. <?php
    2.  
    3.         $dict=file_get_contents("dict1.txt");
    4.         $dict=htmlspecialchars($dict);
    5.         $begin=strpos($dict, '&lt;ar&gt;');
    6.         $end=strpos($dict, '&lt;/ar&gt;');
    7.         $result=substr($dict, $begin, $end);
    8.         echo $result."<hr>";
    9.  
    10.  ?>
    А как теперь это все счастье завернуть на цикл для того чтобы весь файл почикать???

    Попытался сделать так ..., при проверке через FireFox броузер виснет намертво ... Размер текстового файла 65К в тестовом режиме
    Код такой ... что не так написал?

    PHP:
    1.  
    2. <?php
    3.  
    4.          $dict=file_get_contents("dict1.txt");
    5.          $dict=htmlspecialchars($dict);
    6.          $countchars=strlen($dict);
    7.          $begin=strpos($dict, '&lt;ar&gt;');
    8.  
    9.          echo $countchars."<hr>";
    10.  
    11.          while ($begin<=$countchars) {
    12.              $text=substr($dict, $begin, $countchars);
    13.              $end=strpos($text, '&lt;/ar&gt;');
    14.              $result=substr($text, $begin, $end);
    15.              echo $result."<hr>";
    16.              $begin=$end;
    17.          }
    18.        
    19. ?>
    20.  
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    ibuyx
    да, вы правы, не стоит спамить
     
  3. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Есть хороший анекдот:
    Летят мужики на воздушном шаре, летят себе и летят. Но вдруг понимают что заблудились ... Смотрят вокруг - ни одного знакомого ориентира. Вдруг внизу показался другой мужик праздно прогуливавшийся ... Они ему кричат: "Извините, вы не подскажете где мы находимся?", а он ухмыльнулся почесывая кончик носа ответил им: "На воздушном шаре!", пассажиры воздушного шара переглянулись и не сговариваясь, хором воскликнули: "Вы наверно консультантом работаете???", мужик на земле удивленно отвечает: "Да - консультантом, а как вы догадались?", а в ответ: "По вашему ответу на наш вопрос ..." Немая сцена ...
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прям таки броузер виснет? о_О
     
  5. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Да ..., пишет что ожидает ответа от локалхост и на этом тишина ..., пробовал ждать около 10 минут ждал ... Результата никакого ..., что-то не то своял ...
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы условием прекращения цикла довольны? не задумывались, почему ответа он так и не дожидается?
     
  7. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Спасибо за посказку ..., с циклом разобрался ...
    Остановился на решении вот каком:
    PHP:
    1.  
    2. <?php
    3.  
    4.          $dict=file_get_contents("dict1.txt");
    5.          $dict=htmlspecialchars($dict);
    6.          $array=explode("&lt;/ar&gt;", $dict);
    7.          reset($array);
    8.          while(list($key,$val)=each($array))
    9.              {
    10.              echo $val."<hr>";
    11.              }
    12.  
    13. ?>
    14.  
    Пошел дальше ковыряться. Теперь с регулярными выражениями и мускулом ... Ох и забавное это занятие - программирование ... Общение с противоположным полом ни в какое сравнение не идет :)))))))))))))))))))))))))))))))))))))