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]   

> Без описания
ytrewq123
Отправлено: 04 Марта, 2016 - 01:58:32
Post Id


Посетитель


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


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




Здравствуйте!
Вот такой вопросец. Мне надо проверить есть ли в файле все числа от 1 до 30. Они могут быть в разброс. Как понимаю регулярным выражением надо. Или как-то иначе? Если регулярным не подскажите как примерно писать.
 
 Top
freelsd
Отправлено: 04 Марта, 2016 - 09:39:14
Post Id


Гость


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


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




ytrewq123 пишет:
Здравствуйте!
Вот такой вопросец. Мне надо проверить есть ли в файле все числа от 1 до 30. Они могут быть в разброс. Как понимаю регулярным выражением надо. Или как-то иначе? Если регулярным не подскажите как примерно писать.


Регулярка, например такая:
,(с ней еще поиграться нужно потому что я не спец по регекспам) но если надо проверить есть ли в файле все числа, то наверное нужно ее применить к каждой строке а потом сравнить с эталонным массивом (в котором находятся числа от 1 до 30) и если все значения из эталонного массива есть в конечном то задача выполнена - все числа нашлись.

(Отредактировано автором: 04 Марта, 2016 - 10:47:49)

 
 Top
ytrewq123
Отправлено: 04 Марта, 2016 - 17:36:47
Post Id


Посетитель


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


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




Спасибо Вам подумаю. Мне как бы направление было нужно. Надеюсь сейчас справлюсь. Спасибо.
 
 Top
freelsd
Отправлено: 04 Марта, 2016 - 19:11:28
Post Id


Гость


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


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




ytrewq123 пишет:
Спасибо Вам подумаю. Мне как бы направление было нужно. Надеюсь сейчас справлюсь. Спасибо.


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $f = file("text.txt");
  3. $numbers = array();
  4. for( $i = 1; $i <=30; $i++ ){
  5.         $numbers[] = $i;
  6. }
  7.  
  8. //print_r($numbers);
  9.  
  10. $result = array();
  11. foreach($f as $line){
  12.         if( preg_match_all("/\b([1-9]|[1-2][0-9]|30)\b/", $line, $matches) ){
  13.                 $found = $matches[0];
  14.                 //echo $line;
  15.                 foreach($found as $found_number){
  16.                         if ( !in_array($found_number, $result) )
  17.                                 $result[] = $found_number;
  18.                 }
  19.         }
  20.  
  21. }
  22.  
  23. //asort($result);
  24. //print_r($result);
  25. $flag = true;
  26. foreach($numbers as $num){
  27.                 if( !in_array($num, $result) )
  28.                         $flag = false;
  29. }
  30.  
  31. if(!$flag)
  32.         echo "Не все числа найдены!\n";
  33. else
  34.         echo "Все числа были найдены!\n";
  35.  


Вот готовый вариант если еще нужен. Только стоит учитывать что числа должны располагаться отдельно от других слов (то есть с пробелами а не слитно со всем текстом). Должно работать.
 
 Top
andrewkard
Отправлено: 05 Марта, 2016 - 11:23:12
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Чуть более лаконичный вариант:
PHP:
скопировать код в буфер обмена
  1.  
  2. $numbers = [];
  3. $data = file_get_contents('text.txt');
  4.  
  5. for ($i=1;$i<31;$i++){
  6.     $numbers[] = $i;
  7. }
  8. preg_match_all('/\d+/',$data,$matches);
  9. $result = 'Не все цифры есть';
  10.  if (count($numbers) == count(array_intersect($numbers,$matches[0]))){
  11.      $result = 'Все цифры есть';
  12. }
  13. echo $result;
  14.  
 
 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