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]   

> Без описания
pgont
Отправлено: 14 Апреля, 2008 - 11:17:20
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2008  


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




Всем привет, подскажите пожалуйста такой скрипт:
Есть два текстовых файла. В одном список слов или цифр (немного, штук 150, в каждой строке одно слово или цифра), в другом текстовом файле тоже список слов или цифр, так же по одному слову или цифре в каждой строке, но этот список гораздо больше (несколько тысяч или дестятков тысяч). Нужно чтобы скрипт проверил есть ли слова или цифры из первого файла во втором и вывел на экран те, которые есть.
Я программирую недавно и попытался сделать это так, но не работает:

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. $file1=file("file1.txt");
  3. $file2=file_get_contents("file2.txt");
  4. $n=sizeof($file1);
  5. $i=0;
  6. while ($i<$n)
  7. {
  8. $one=$file1[$i];
  9. eregi($one, $file2, $regs);
  10. $b= sizeof($regs);
  11.   if ($b>=1)
  12.   {
  13.         $ret=$regs[0];
  14.        
  15.         echo "$ret";
  16. unset ($regs);
  17.   }
  18.   else {echo "NO WORD";}
  19. $i++;
  20. }
  21.  ?>


file1.txt - файл с базой цифр или слов, которые нужно найти в file2.txt
Буду очень благодарен всем кто поможет, зараннее огромное спасибо.

(Отредактировано автором: 14 Апреля, 2008 - 11:19:24)

 
 Top
EuGen Администратор
Отправлено: 14 Апреля, 2008 - 11:30:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Можно попробовать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $rgF1=file("file1.txt");
  4. $rgF2=file("file2.txt");
  5. $result=array_intersect($rgF2, $rgF1);
  6. //собственно, $result и должен быть Вашим массивом
  7. ?>
  8.  

Я говорю "попробовать" не потому, что это может не сработать, а потому, что сам лично никогда не использовал функцию array_intersect. Почитать можете тут:
http://php.su/functions/?array-intersect


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
pgont
Отправлено: 14 Апреля, 2008 - 12:19:30
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2008  


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




To EuGen
Спасибо громное за ответ, но я сам виноват, забыл уточнить, что скрипт должен найти слово или цифру из пкрвого файла во втором при условии, что во втором файле к слову или цифре могут быть добавлены другие символы. Например:
в первом файле есть слово ВИЗИТК, а во втором ВИЗИТКАМ, ВИЗИТКИ, или в первом файле есть цифра 45612, а во втором 2456123. Нужно чтобы скрипт нашел хотябы одно совпадение и показал, что оно есть выводом того, что совпало.
 
 Top
EuGen Администратор
Отправлено: 14 Апреля, 2008 - 12:32:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Тут уже, пожалуй, не обойтись стандартными функциями.
Примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function search_array_string(&$rgData, $search)
  4. {
  5.    foreach ($rgData as $key=>$value)
  6.    {
  7.       if(strpos($value, $search)!==FALSE)
  8.          return $value;
  9.    }
  10.    return FALSE;
  11. }
  12. $rgF1=file("file1.txt");
  13. $rgF2=file("file2.txt");
  14. $rgResult=array();
  15. foreach($rgF1 as $key=>$value)
  16. {
  17.    $found=search_array_string($rgF2, $value);
  18.    if($found!==FALSE)
  19.       $rgResult[$value]=$found;
  20. }
  21. //на выходе имеем массив - $rgResult, содержащий совпадения в порядке "значение из 1-го массива"=>"найденное значение 2-го массива"
  22. ?>
  23.  

(Отредактировано автором: 14 Апреля, 2008 - 12:32:44)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
pgont
Отправлено: 14 Апреля, 2008 - 21:22:04
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2008  


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




To EuGen
Спасибо огромное, все работает, это как раз то что нужно, сам не догадался до такого.
 
 Top
pgont
Отправлено: 22 Апреля, 2008 - 12:34:04
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2008  


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




Только сейчас заметил что не точно работает, допустим если в file1.txt есть слова:
визитк
буклет
гараж

а в file2.txt слова:
визтки
визиткам
визитница
буклеты
гаражи
ручки
тетради

то в массив $rgResult будет содержать только гараж=>гаражи и все, скрипт найдет и положит в массив $rgResult всегда только последнее значение из file1.txt. У меня работает только так.
Пожалуйста подскажите что сделать чобы скрипт заработал.
 
 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