Как выдернуть текст из txt методом PHP

Discussion in 'PHP' started by Axeee, 19 Oct 2015.

  1. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    Есть нное количество тхт файлов, нужно посредством пхп выдернуть из каждого файла в папке 15 первых символов и поместить в другой тхт, причем так, что бы каждый выдернутый текст из каждого файла был с новой строки в этом фале.

    пример:

    В папке находятся 3 файла (к примеру)

    1 файл тхт содержит:
    текст1тексте1тексте1тексте1тексте1тексте1тексте1тексте1тексте1тексте....
    2 файл тхт содержит:
    текст2текст2текст2текст2текст2текст2текст2текст2текст2текст2текст2текст....
    3 файл тхт содержит:
    тектекст2тектекст2тектекст2тектекст2тектекст2тектекст2тектекст2тектекст....

    Запускаем пхп и получаем файл со следующим содержимым:
    текст1тексте1те
    текст2текст2тек
    тектекст2тектек


    Вот такую идею хочу осуществить (только файлов будет очень много)
     
  2. hesher

    hesher Elder - Старейшина

    Joined:
    23 Aug 2005
    Messages:
    74
    Likes Received:
    108
    Reputations:
    4
    Привет. Не проверял, но должно сработать так:

    PHP:
    <?php

    foreach (glob(__DIR__."/files/*.*") as $file){
       
    file_put_contents(__DIR__.'/result.txt'file_get_contents($fileNULLNULL015).PHP_EOLFILE_APPEND);
    }
    Файлы соответственно в папке /files/, а сам скрипт должен находится на уровень выше.

    Напиши если не сработает.
     
    Axeee likes this.
  3. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    вроде самое то, но тут есть небольшая проблема, если в тескте которые он парсит есть абзац, то он его тоже копирует как абзац и получается в результате не текст в строку а опять строки. А так текст если просто написан без них, то все ок. Осталось только понять как сделать так, что бы абзацы не копировались или заменялись на обычный пробел, что бы в результате был сплошной текст в одну строку с каждого документа своя строка.
     
  4. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    я это к тому, что у меня текст в исходных файлах не всегда сплошной, бывают абзацы в первых строках
     
  5. hesher

    hesher Elder - Старейшина

    Joined:
    23 Aug 2005
    Messages:
    74
    Likes Received:
    108
    Reputations:
    4
    PHP:
    <?php

    foreach (glob(__DIR__."/files/*.*") as $file){
        
    file_put_contents(__DIR__.'/result.txt'preg_replace("@\r\n|[\r\n]@"," "file_get_contents($fileNULLNULL015)).PHP_EOLFILE_APPEND);
    }
     
    Axeee likes this.
  6. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    Супер! Огромное спасибо! Вы меня выручаете очень сильно!!
    А не сложно будет Вам подсказать еще такой нюанс :) з.ы. хотя я уже наверно достал)
    Как добавить в этот код например фильтр слов, например + ко всему этому, что бы удалялись определенные слова ? (но при этом все копировалось так же, кроме этих слов)
    Если можно, на примере хотя бы двух слов "этоссылка" и "этолинк", что бы я мог понять как и куда добавлять эти слова.
     
    #6 Axeee, 20 Oct 2015
    Last edited: 20 Oct 2015
  7. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    з.ы. либо как это осуществить отдельно, по получившимся файлу
     
  8. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    извини что беспокою, но хотел задать вопрос по вчерашнему скрипту, который ты мне написал :)

    <?php

    foreach (glob(__DIR__."/files*.*") as $file){
    file_put_contents(__DIR__.'/result.txt', preg_replace("@\r\n|[\r\n]@"," ", file_get_contents($file, NULL, NULL, 0, 15)).PHP_EOL, FILE_APPEND);
    }

    вчера все работало, а сегодня переустановил денвер с 5.3 на 5.2 (т.кю большинство скриптов моих на нем работают) и работать перестал :(
    т.е. ничего не происходит после срабатывания скрипта (файл не создается с результатом)
     
  9. hesher

    hesher Elder - Старейшина

    Joined:
    23 Aug 2005
    Messages:
    74
    Likes Received:
    108
    Reputations:
    4
    Привет.
    __DIR__ была добавлена в 5.3
    Попробуй заменить места, где она присутствует на:
    dirname(__FILE__)
     
    Axeee likes this.
  10. Axeee

    Axeee Elder - Старейшина

    Joined:
    26 Nov 2008
    Messages:
    286
    Likes Received:
    15
    Reputations:
    0
    столкнулся с такой проблемой, что начал выдергивать текст из тхт, но сохраняет некоторые в иероглифах, хотя тот же текст в текстовом документе и там все ок. Как решить такую проблему ? Может как то в коде указать кодировку ? (з.ы. у меня так только русский текст)

    з.ы. файлы из которых он дергает текст с Русскими именами и форматом тхт

    ..норм дергает только у UTF-8 а остальные не хочет
     
    #10 Axeee, 24 Oct 2015
    Last edited: 24 Oct 2015
  11. mykakasina

    mykakasina New Member

    Joined:
    31 Aug 2012
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Ну вот смотри :
    PHP:
    $folder_old_name $function ";
    $folder substr($folder_old_namestrlen("abc ") );
    сначала мы можем просканировать весь файл, потом, вычистив его(я опустил это) мы можем элементарно делать перебор по строке\или же фразе.Тут я привел пример, когда в начале у нас стоит 3 символа, которые нам не нужны.И потом просто проецируем это на нашу функцию и, например, полученное из нашего высшего выражения, создаем на его основе папку:
    PHP:
    mkdir(. $folder)
    Вот и все.
     
  12. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Code:
    function quote($value) {
    return preg_quote($value,"/");
    }
    $words = array_map("quote",array('123','321'));
    $text  = file_get_contents($file, NULL, NULL, 0, 15);
    $convertedText = mb_convert_encoding($text, 'utf-8', mb_detect_encoding($text));
    file_put_contents(__DIR__.'/result.txt', preg_replace("/\r\n|[\r\n](".implode('|',$words).")/"," ", $convertedText);
    
    что-то типа
     
    _________________________