Парсинг файлов в цикле

Тема в разделе "PHP", создана пользователем Stripe, 10 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Есть следующий код:
    PHP:
    //Получаем список файлов в папке
            
    $handle opendir('rb');
                while (
    $file readdir($handle)) {
                    if (
    $file != "." and $file != "..") { 
                        
    $a[] = $file;//Присвоение массиву полученных данных
                        
    echo ''.$file.'<br>';
                        }
                }
                
    closedir($handle);
                    echo (
    '<br><br>');
                    echo 
    $a[20];
    //загоняем все в цикл и получаем контент
    while ($files){
    $content file_get_contents('http://'.$domain.''.$a[].'');
    echo 
    $content;
    }
    Собственно как распарсить текст из файлов в цикле?
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Ты вообще в курсе что такое парсинг ?
    так вот что бы тебе помочь нужно минимум знать что и откуда тебе нужно получить

    минимум -- пример файла на входе и пример файла на выходе
     
    Stripe нравится это.
  3. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Ну если ты посмотрел на код то увидел наверное что первые 10 строк тягают имена файлов из папки, которые потом подставляются в переменную $content. Так вот, проблема у меня в том, что бы на выходе получить не 1 расперсенный файл (как если бы было не $a[], а $a[0]), а получить контент всех файлов что есть в папке., тоесть $a[0...n]. В данном примере $a[] не работает, как можно задать на парсинг весь массив $a[]? Что в файлах не важно, это дело третье и решенное.
     
  4. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    PHP:
    while ($files){
    $content file_get_contents('http://'.$domain.''.$a[].'');
    echo 
    $content;
    }  
    это полный бред. цикл неработоспособен изначально и вообще вырван из контекста. нормальный код надо давать. читает папку локальную, далее дергает почему то по урлу с немыслимыми параметрами в вечном цикле.
     
  5. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Может такой цикл будет работать

    PHP:
    for($i=0;$i<count($a);$i++){
    $content file_get_contents('http://'.$domain.''.$a[$i].'');
    echo 
    $content; }
     
  6. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Хорошо, задам вопрос по другому: А как надо тогда сделать? Выше приведенный код - весь.
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    PHP:
    $a[] = $file;//Присвоение массиву полученных данных
    вернее будет так

    PHP:
    $a[] = 'rb/'.$file;//Присвоение массиву полученных данных
     
    Stripe нравится это.
  8. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    PHP:
    $handle opendir('rb');
                while (
    $file readdir($handle)) {
                    if (
    $file != "." and $file != "..") { 
                        
    $a[] = $file;//Присвоение массиву полученных данных
                        
    echo ''.$file.'<br>';
                        }
                }
                
    closedir($handle);
                    echo (
    '<br><br>');
                    echo 
    $a[20];

    $tmp=count($file)-1;
    for(
    $i=0$i<=$tmp$i++)
    {
    $content file_get_contents('rb/'.$a[$i].'');
    echo 
    $content;
    echo (
    '<br>1<br>');
    }
    Вот тут echo $content; выводится на страницу только контент первого файла, как дернуть контент остальных файлов?
     
  9. omega

    omega Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    30
    Симпатии:
    10
    Что то я не пойму, зачем считывать локально список файлов, а потом их открывать через хттп. Возможно файлы там пхп (или чтото подобное) и они генерят чегото, что нужно потом какимто образом результат обработать/отпарсить ?
    Есди тебе нужно весь контент в одной переменной используй просто
    PHP:
    for($i=0;$i<count($a);$i++){
    $content .= file_get_contents('http://'.$domain.'/rb/'.$a[$i]);
    }  
    echo 
    $content;
    Если массив с содержимым то
    PHP:
    for($i=0;$i<count($a);$i++){
    $content[$i] = file_get_contents('http://'.$domain.'/rb/'.$a[$i]);  
    echo 
    $content[$i];}
    В случае если его ($content) нужно дополнительно обработать я бы использовал регекспы. Например
    PHP:
    preg_match_all("/<p>(.*)<br>\r\n<a href=\"(.*)\">.*<\/a><\/p>/isU"$content$matchesPREG_PATTERN_ORDER);  
    т.е. обрати внимание на функцию preg_match_all Перейти по ссылке
     
    Stripe нравится это.
  10. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Я правильно понимаю, что этот вариант дергает контент из первого фала, выводит его на страницу, потом контент из сдледующего файла и выводит его на страницу? Вопрос в том, что контент с каждой страницы мне надо обработать регуляркой и добавить его в базу как отдельную запись.
     
Статус темы:
Закрыта.