Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск в файле

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Непойму в чем проблемма ((
thefreedom
Отправлено: 24 Октября, 2012 - 13:17:02
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. $form = $_POST ['form']; // Форма
  3. $file =  file('search.html'); // Файл
  4. $out = "";
  5. $count = count($file);
  6.  
  7. for($i=0; $i < $count; $i++)
  8.  
  9. {
  10. if (strstr($file[$i],$form))
  11. {
  12. $out.=$file[$i];
  13. }
  14. }
  15.  
  16. if($out == "")
  17. {
  18. $out = 'Ничего не найденно !';
  19. }
  20.  
  21. {
  22. echo $out;
  23. }
  24. ?>


В файле:
1 Иванов
2 Петров
3 Сидоров
4 Орлов
5 Петров
6 Соколов

Поиск отрабатывает правильно но не ищет всех ?

Пример:
Ищем
Петров
Должен найти и вывести строки:
2 Петров
5 Петров
Но увы находит и выводит лишь
5 Петров

Добрые люди помогите пожалуйста в чём может быть проблема.

(Отредактировано автором: 25 Октября, 2012 - 10:14:13)

 
 Top
Bartezz
Отправлено: 24 Октября, 2012 - 13:56:01
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2010  


Помог: 1 раз(а)




У вас всегда будет выдаваться "Ничего не найдено !", потому что массив с содержимым файла $f очень в редких случаях будет равен $form. По факту условие вообще не имеет отношение к поставленной задаче

PHP:
скопировать код в буфер обмена
  1. <?
  2. $form = $_POST ['form']; // Форма
  3. $f = file('search.html'); // Файл
  4.  
  5. for($i=0; $i < count($f); $i++)
  6. {
  7. if (strstr($f[$i],"$form"))
  8. {
  9. $out.= $f[$i];
  10. }
  11.  
  12. if($out=="")
  13. {
  14. $out= '<br> Ничего не найденно !';
  15. }
  16. }
  17. echo $out;
  18. ?>
  19.  

как вариант на скорую руку

(Отредактировано автором: 24 Октября, 2012 - 13:56:47)

 
 Top
thefreedom
Отправлено: 24 Октября, 2012 - 14:40:53
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Notice: Undefined variable на строчке if($out=="")

А под ошибкой результат выводится как надо

(Отредактировано автором: 24 Октября, 2012 - 14:43:12)

 
 Top
KingStar
Отправлено: 24 Октября, 2012 - 14:48:18
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. $form = $_POST ['form']; // Форма
  3. $f = file('search.html'); // Файл
  4.  
  5. $out = "";
  6. $count = count($f);
  7.  
  8. for($i=0; $i < $count; $i++)
  9. {
  10.    if (strstr($f[$i], $form))
  11.    {
  12.       $out.= $f[$i];
  13.    }
  14.  
  15. }
  16.  
  17. if($out == "")
  18. {
  19.       $out= '<br> Ничего не найденно !';
  20. }
  21. else
  22. {
  23.     echo $out;
  24. }
  25. ?>

(Отредактировано автором: 24 Октября, 2012 - 14:50:27)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
thefreedom
Отправлено: 24 Октября, 2012 - 14:57:35
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




А при такой раскладке он не видит все строки.

Пример
1 Ваня
2 Петя
3 Толя
4 Костя
5 Толя
Поиск "Толя"

Нужно чтобы так выводилось, т.е. все строчки которые найдет, не пойму почему не выводит ? Что их режет ???

Вывод:
3 Толя
5 Толя


Может нужно использовать foreach но непойму куда вставить Огорчение помогите пожалуйста.

(Отредактировано автором: 25 Октября, 2012 - 07:40:15)

 
 Top
thefreedom
Отправлено: 25 Октября, 2012 - 09:02:15
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Помогите пожалуйста не пойму почему выводит только одно значение ?

Вроде всё правильно судя мануалу:

PHP:
скопировать код в буфер обмена
  1.  
  2. [b]ЭТО МАНУАЛ !!![/b]
  3. Функция считывает файл с именем filename и возвращает массив, каждый элемент которого соответствует строке в прочитанном файле. В следующем примере с помощью функции читается файл, информация из которого затем выводится в браузер.
  4. <?
  5.   $file_array = file("file.txt");
  6.   if(!$file_array)
  7.   {
  8.     echo("Ошибка открытия файла");
  9.   }
  10.   else
  11.   {
  12.     for($i=0; $i < count($file_array); $i++)
  13.     {
  14.       printf("%s<br>", $file_array[$i]);
  15.     }
  16.   }
  17. ?>



с foreach($f as $str) тоже выводит только одну найденную строку бред какой-то (((

(Отредактировано автором: 25 Октября, 2012 - 09:46:29)

 
 Top
imya
Отправлено: 25 Октября, 2012 - 09:20:59
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Попробуй так:
PHP:
скопировать код в буфер обмена
  1. $counter = count($file_array);
  2. for ($i=0;$i<$conuter;$i++)
  3. {
  4.    echo $file_array{$i}. "<br />";
  5. }


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
thefreedom
Отправлено: 25 Октября, 2012 - 09:37:41
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




imya пишет:
echo $file_array{$i}. "<br />";


А разница только в <br />, тогда я так уже пробовал выводит тоже 1 строку Огорчение

(Отредактировано автором: 25 Октября, 2012 - 09:38:48)

 
 Top
imya
Отправлено: 25 Октября, 2012 - 09:46:34
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




А что находится в вашем file.txt? И откуда вы брали комментарий:

Функция считывает файл с именем filename и возвращает массив, каждый элемент которого соответствует строке в прочитанном файле. В следующем примере с помощью функции читается файл, информация из которого затем выводится в браузер.

Если вы код брали откуда-то, то ваш файл по идее должен называться filename.txt хотя могу и ошибаться


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 25 Октября, 2012 - 09:47:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1. file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 
 Top
thefreedom
Отправлено: 25 Октября, 2012 - 09:51:33
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




imya пишет:
А что находится в вашем file.txt? И откуда вы брали комментарий:

Функция считывает файл с именем filename и возвращает массив, каждый элемент которого соответствует строке в прочитанном файле. В следующем примере с помощью функции читается файл, информация из которого затем выводится в браузер.

Если вы код брали откуда-то, то ваш файл по идее должен называться filename.txt хотя могу и ошибаться



Да это пример он работает нормально не работает в моём случае смотрите шапку.
 
 Top
imya
Отправлено: 25 Октября, 2012 - 09:58:12
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




В вашем случае будет выводится последнее вхождение выражения в файле, в
$out= $f[$i];
сделайте конкатенацию
$out.= $f[$i];


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
thefreedom
Отправлено: 25 Октября, 2012 - 09:58:21
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




armancho7777777 пишет:
file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);


Дело не в пустых строках а в выводе их всех. Смотрите шапку.
(Добавление)
imya пишет:
В вашем случае будет выводится последнее вхождение выражения в файле, в
$out= $f[$i];
сделайте конкатенацию
$out.= $f[$i];


Так стало искать правильно а как теперь строчки отобразить не в кучу, а построчно ?
Пример:
1 Вася 3 Вася 17 Вася
Надо так:
1 Вася
3 Вася
17 Вася
(Добавление)
Всё вроде сам понял.... Всем спасибо. Шапку обновил.
 
 Top
imya
Отправлено: 25 Октября, 2012 - 10:16:12
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Я вам выше писал уже:


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
thefreedom
Отправлено: 23 Июня, 2016 - 13:22:45
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. $form = $_POST ['form'];
  3. //$file1 =  file('222.html');
  4. //$file2 =  file('223.html');
  5. //$file3 =  file('224.html');
  6. //$file =  $file1,$file2;$file3;
  7. $file =  file('222.html');
  8.  
  9. $out = "";
  10. $count = count($file);
  11.  
  12. for($i=0; $i < $count; $i++)
  13.  
  14. {
  15. if (stristr($file[$i],$form))
  16. {
  17. $out.=$file[$i];
  18. }
  19. }
  20.  
  21. if($out == "")
  22. {
  23. $out = 'Ничего не найденно !';
  24. }
  25.  
  26. {
  27. echo "<br>",$out;
  28. }
  29. ?>


Как заставит искать по нескольким файлам ? Кучу вариантов перепробовал ((( Не хватает знаний моих

(Отредактировано автором: 23 Июня, 2016 - 13:36:52)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB