Поиск в файле и вывод строки с результатом...

Тема в разделе "PHP", создана пользователем WorkNets, 29 май 2008.

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

    WorkNets

    Регистр.:
    25 апр 2008
    Сообщения:
    161
    Симпатии:
    37
    Приветствую всех зашедших. Есть часть кода:
    PHP:
    $link="links.txt";
    $file=fopen($link,"r");
    $rf fread($filefilesize($link));  
    fclose($file);

    $code $rf;

    $s strpos($code"$partner");
    ......
    Тут нужно вывести строку в которой нашлось $partner
    В последней строке идет поиск первого вхождения значения которое содержится в $partner. Как сделать чтоб выводилась полностью строка в которой найдено это вхождение? Чет я туплю :confused:
    Ай Нид Хелп :bc:
    Заранее пасиб :thenks::thenks::thenks:
     
  2. Dimkich

    Dimkich Постоялец

    Регистр.:
    10 июл 2007
    Сообщения:
    119
    Симпатии:
    36
    по моему проще было бы так

    PHP:
    $link="links.txt";
    $rf file($link);  
    for (
    $i=0$i<count($rf); $i++)
      if (
    strpos($rf[$i], "$partner")!==false) echo $rf[$i];
     
    WorkNets нравится это.
  3. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Dimkich, я вот не знаю - банить тебя или нет... Ты считаешь себя профессиональным программистом? что будет, если его файл - это 1 млн строк? А о том, что ты каждый раз в for запускаешь подсчет размера массива - думал вообще? :D

    WorkNets, не слушай плохих программистов! Учись думать и понимать сам. Чтобы компенсировать твои возможные потери от использования плохого кода, предлагаю следующий вариант ;)

    PHP:
    $sFile 'myFile.txt';
    $sPartner 'yandex';
        
    if(
    file_exists($sFile) && is_readable($sFile) && strlen($sPartner)) {
            
        
    $hFr fopen($sFile);
        
    $iCounter 0;
            
        while (
    $sLine fgets($hFr)) {
            
    $iCounter++;
            if(
    strpos($sLine$sPartner) !== false) {
                    echo 
    'Substring '.$sPartner.' found at line #'.$iCounter.' in string '.$sLine.'<br />'."\n";
                   
    // если нужно остановить поиск - пишем break;
            
    }
         }
         
    fclose($hFr);
     }
    ЗЫ: Спасибо Солюшну - облажался с проверкой на is_readable и fclose :)
    ЗЫЫ. Замечание Dimkich о скобке принято ;)
     
    Dimkich и WorkNets нравится это.
  4. SolutionFix

    SolutionFix 17 лет програмлю ;)

    Регистр.:
    20 ноя 2006
    Сообщения:
    272
    Симпатии:
    318
    гы... А теперь задачи со звездочкой.

    * Реализовать алгоритм, который написал Jeurey, но используя конструкцию цикла for. Размер файла не ограничен. Задача несложная, исключительно на знание особенностей пхп.

    ** Достаточно сложная задача на алгоритмику. Решить задачу ТС, только под искомой строкой понимается любой набор символов, возможно включающий в себя знаки переноса строки.

    :)
     
  5. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    А я знаю ответ :p
     
  6. WorkNets

    WorkNets

    Регистр.:
    25 апр 2008
    Сообщения:
    161
    Симпатии:
    37
    Пасиб за элегантное решение. Сам только учусь поэтому и обращаюсь к знающим людям :ah:
    Невозможно же научиться всему самому без наставников и критики.
    Поэтому сначала читаем :read: самоучитель, тут же пробуем писать, и если попадаем в ступор просим помощи :bc: на нуле :) Чтоб избежать ошибок в дальнейшем и учиться правильно строить алгоритмы и создавать хороший код...
     
Статус темы:
Закрыта.