собрать информацию из txt после запятой

Тема в разделе "PHP", создана пользователем ftpman, 6 май 2010.

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

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    Имеются много файлов в txt с информацией видом:
    PHP:
    ИмяТелефонПочтаТекстТекст
    Имя
    ТелефонПочтаТекстТекст
    Имя
    ТелефонПочтаТекстТекст
    Задача собрать только Почту из всех txt в 1 файл. Другими словами с каждой новой строки, надо забрать весь текст что после второй запятой до третьей, и вынести его в отдельный файл.
    Результат в новом файле должен быть таким:
    PHP:
    Почта
    Почта
    Почта
    Возможно ли такое сделать на php? Есть ли у кого хотя бы примерный готовый скрипт?
     
  2. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    292
    Симпатии:
    36
    Предварительно создайте файл new.txt и задайте ему права на запись. Считываемый файл - file.txt.
    Вот код:
    PHP:
    <?php
    $fileout 
    "new.txt";
    $fh fopen($fileout"a+");

    $filein file_get_contents("file.txt");
    $filein explode("\n",$filein);
    $num count($filein);

    for (
    $i=0$i $num$i++)    {
        
    $buf explode(",",$filein[$i]);
        
    $res substr($buf[2],1) . "\n";
        
    fwrite($fh$res);
    }

    fclose($fh);

    ?>
    Если работаете на виндовом сервере, то вместо "\n" нужно ставить "\r\n". Если есть необходимость автоматизировать считывание файлов, то это тоже можно делать в цикле.
     
    ftpman нравится это.
  3. ftpman

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    работает сенкс!
     
  4. ftpman

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    ещё вопрос, а как сделать что бы результат в txt был не такой:
    PHP:
    слово1
    слово2

    слово3




    слово4
    слово5

    слово6
    а нормальный:
    PHP:
    слово1
    слово2
    слово3
    слово4
    PHP:
    $filein trim(preg_replace("/[\r\n]+/m","\r\n"$filein));
    не помогло :\
     
  5. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Не видно отличий между "таким" и нормальным
     
  6. ftpman

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    Извиняюсь... Поправил
    В общем без пустых строк.
    PHP:
    слово1
    слово2



    слово3


    слово4

    слово5


    слово6 
    нужно:

    PHP:
    слово1
    слово2
    слово3
    слово4
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Во-первых, filein - это массив и строковые функции к нему не применимы. У тебя в файл пишется переменная $res, вот ее и нужно обрабатывать
     
  8. ftpman

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    Пробовал с переменной $res, результат всё в строку.
    PHP:
    Слово1Слово2Слово3...
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
                           <?php 
    $fileout 
    "new.txt"
    $fh fopen($fileout"a+"); 
    $filein file_get_contents("file.txt"); 
    $filein explode("\r\n",$filein); 
    $num count($filein); 
    for (
    $i=0$i $num$i++)    { 
        
    $buf explode(",",$filein[$i]); 
        
    $res substr($buf[2],1) . "\r\n"
        
    fwrite($fh$res); 

    fclose($fh); 
    ?>                
     
  10. ftpman

    ftpman

    Регистр.:
    13 июн 2008
    Сообщения:
    193
    Симпатии:
    64
    а в чём различие с первым вариантом? код идентичен за исключением fopen a+
     
Статус темы:
Закрыта.