ФорумПрограммированиеPHP для идиотов → Поиск строки в текстовом файле

Поиск строки в текстовом файле

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 1 августа 2008 г. 11:02

    Добрый день!
    Подскажите пожалуйста функцию PHP с помощью которой можно выдернуть строчку из файла по первому и последнему вхождению символа в строку.

    Например так:

    1 Первая строчка #
    2 Вторая строчка #
    3 Третья строчка #

    Как сделать что бы выдернуть строчку по 1 символу я нашел, строку находит, но и выводит все следующие строки. А надо выбирать строку по первому символу и закончить последним (#)
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 1 августа 2008 г. 11:33, спустя 30 минут 20 секунд

    Делай запись в файл так:

    file.txt
    1|Первая строчка|#
    2|Вторая строчка|#
    3|Третья строчка|#


    а вот скрипт обработки

    script.php

    $fh=fopen("file.txt", "a+");
    $qwe=-1;
    while (!feof($fh))
    {
               $qwe++;
       $CountA[$qwe]=fgets($fh);
           $CountB[$qwe]=explode("|", $CountA[$qwe]);
       }

    echo $CountB['0']['0'];//выведет 1
    echo $CountB['0']['2'];//выведет #
    echo $CountB['1']['1'];//выведет Вторая строчка
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 1 августа 2008 г. 11:43, спустя 10 минут 1 секунду

    А по проще можно как-нибудь? без эксплода. Не хочется резать строчки, потому что у меня и так все порезанно уже и в List/menu засунуто
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 1 августа 2008 г. 12:09, спустя 26 минут 12 секунд

    $fh=fopen("file.txt", "a+");
    $qwe=0;
    while (!feof($fh))
    {
    $CountA[$qwe]=fgets($fh);
    $CountB[$qwe]=preg_replace('|[0-1]+(.*)#|', '\\1',$CountA[$qwe]);
    $qwe++;
    }
    echo $CountB['0'];//выведет Первая строчка
    echo $CountB['1'];//выведет Вторая строчка


    Timur: код оформляем
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 1 августа 2008 г. 12:13, спустя 4 минуты 16 секунд

    Professor, ну и зачем там preg_replace ??? ты ж ничего не заменяешь
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 1 августа 2008 г. 12:19, спустя 6 минут 13 секунд

    <?php
    $needle = 3;
    $result = null;
    $fh = fopen('file.dat', 'r');
    if (! $fh) {
    echo 'File "file.dat" not found';
    }
    while (! feof($fh)) {
    $str = fgets($fh);
    $num = strtok($str, ' ');
    if ($num == intval($needle)) {
    $result = strtok('#');
    break;
    }
    }
    echo $result;
    fclose($fh);
    ?>
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 1 августа 2008 г. 12:22, спустя 2 минуты 45 секунд

    Работает же?!Ну хорошо,можно и так…


    $CountA[$qwe]=fgets($fh);
    preg_match('|[0-1]+(.*)#|',$CountA[$qwe], $matches);
    $CountB[$qwe]=$matches[1];
    $qwe++;
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 1 августа 2008 г. 12:24, спустя 2 минуты 1 секунду

    щас придет топикстартер и скажет, что уже сам всё сделал…
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 1 августа 2008 г. 13:21, спустя 56 минут 53 секунды

    Работает же?!

    Слышал выражение «гланды через жопу удалять»?
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 1 августа 2008 г. 13:25, спустя 4 минуты 21 секунду

    Подправил немного текстовый файл. Все сделал. Всем спасибо
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 1 августа 2008 г. 13:32, спустя 6 минут 53 секунды

    щас придет топикстартер и скажет, что уже сам всё сделал…
    xD
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 1 августа 2008 г. 14:43, спустя 1 час 11 минут 12 секунд

    Работает же?!

    бля ну что за люди!!!
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 1 августа 2008 г. 14:54, спустя 10 минут 28 секунд

    бля ну что за люди!!!

    Извини конечно,но чем тебе не нравится preg_replace???
    Он медленно работает??Или много лишнего кода и "гемороя"???Или еще какие то проблеммы???
    он заменяет строку "1 Первая строчка #" на "Первая строчка".

    Я понимаю,если бы я написал код на 2 страницы для решения данной проблеммы,это была бы жопа!!!!
    А так есть орудие и я вправе им воспользоваться.Кто сказал что preg_replace здесь не подайдет?????
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 1 августа 2008 г. 15:00, спустя 5 минут 59 секунд

    берешь косу (серп, топор, на твой выбор) и бреешься
    у тебя выйдет, может даже также быстро как бритвой
    возможно даже лицо не порежешь
    так есть орудие и ТЫ вправе им воспользоваться (с)
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 1 августа 2008 г. 15:03, спустя 2 минуты 51 секунду

    че вы ругаетесь?
    ТС'у скорее всего это разово нужно, поэтому по части скорости заморачиваться не стоит
    че все нервные такие стали?
    пойду в админку, посмотрю, как здесь предупредительные баны в голову делать :)
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!