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]   

> Описание: некоректно работает скрипт :(
OrmaJever Модератор
Отправлено: 19 Января, 2010 - 22:44:01
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




суть проблемы такова: у меня есть файл с базой мыл, и есть сайт на котором нужно эти мыла найти. На странице сайта около 10тисяч мыл, а в файле около 6тисяч. Нужно каждоемыло с файла поискать на сайте! Решил написать скрипт всё зделал но вот проблема: ещет совпадения только с ожнним первым символом мыло(если мыло adssa то ищет только a@mail.ru) Скрипт выгледит так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file = fopen("a.txt", "r");
  3. if(!isset($file)){
  4.         echo "Невозможно открыть файл!";
  5. }else{
  6.         while(!feof($file)){
  7.                 $a .= fgets($file);
  8.         }
  9. }
  10. $url = "http://site/file.php";
  11. $file2 = fopen($url, 'r');
  12. if(!isset($file2)){
  13.         echo "Неудалось открыть файл2!";
  14. }else{
  15.         while(!feof($file2)){
  16.                 $c .= fgets($file2);
  17.         }
  18. }
  19. preg_match_all('/[a-z0-9A-Z_-]{1,20}@rambler.ru/is', $a, $b);
  20. for($i=0; $i<6520; $i++){
  21.     $m = substr(strstr($c,$b[0][$i]),0,17);
  22.     echo $m;
  23. }
  24. ?>

при выводе масива $b[0][$i] (в цыкле) то выводятся все мыла коректно и полностью. но ищет только с первым символомНедовольство, огорчение( В чём может быть проблема?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vitaliy_mad
Отправлено: 19 Января, 2010 - 22:58:16
Post Id


Участник


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


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




Выведет все совпадающие мыла:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     $arr=file('your_mail_db.txt'); // Ваша база. каждое мыло с новой строки
  3.     $f=implode(',',file('http://www.example.com/')); // урл сайта
  4.     foreach($arr as $d) {
  5.             if (preg_match('/'.trim($d).'/',$f)) {
  6.             echo "$d\n";
  7.         }
  8.     }
  9. ?>
  10.  

Правда в данном случае лучше обойтись strpos вместо preg_match...

(Отредактировано автором: 19 Января, 2010 - 22:58:59)

 
 Top
OrmaJever Модератор
Отправлено: 19 Января, 2010 - 23:28:14
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




результат работы скрипта:
Спойлер (Отобразить)
ищет только по пару символов с мыла! почему так?


Отредактировано модератором: JustUserR, 20 Января, 2010 - 10:09:44
Убрал в спойлер большой список emailов


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vitaliy_mad
Отправлено: 19 Января, 2010 - 23:33:03
Post Id


Участник


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


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




значит есть такие емэйлы
 
 Top
OrmaJever Модератор
Отправлено: 19 Января, 2010 - 23:38:46
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




в списке их нету! как я понял оно когда не находит ищет акто по символам! нашло только 1 полный эмеил а все кусками. я как начала ручным поиском перебирать например bad@rambler.ru то и в файле и на сайте находило много фариантов с разными префиксами.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vitaliy_mad
Отправлено: 19 Января, 2010 - 23:45:20
Post Id


Участник


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


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




не встречал случаи частичной обработки регулярного выражения функцией preg_match.

вот экперимент, для Вас:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. php > echo preg_match('/testest@aaa.bb/','testest@aaa.bb');
  3. 1
  4. php > echo preg_match('/testest@aaa.bb/','testeste@aaa.bb');
  5. 0
  6. php > echo preg_match('/testeste@aaa.bb/','testest@aaa.bb');
  7. 0
  8.  

(Отредактировано автором: 19 Января, 2010 - 23:46:11)

 
 Top
JustUserR
Отправлено: 20 Января, 2010 - 10:12:59
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




OrmaJever Может быть надо в регулярном выражении ([a-z0-9A-Z_-]{1,20})@rambler.ru скобки добавить как показано чтобы он запоминал данный кусок разбираемого выражения в $1
И вы уверены что с сайта можно так считывать файл - это всетаки popen не есть хорошо Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 20 Января, 2010 - 16:15:04
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




JustUserR, я писал echo $c файл выводится коректно и полностью.
потом я писал
for($i=0; $i<6520; $i++){
echo $b[0][$i];
}

и коректно и полностью выводится масив эмейлов! (каждый с новос строки).
тут проблема в поиске в 22 строке!
$m = substr(strstr($c,$b[0][$i]),0,17);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 21 Января, 2010 - 10:35:09
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




OrmaJever пишет:
Тут проблема в поиске в 22 строке!
$m = substr(strstr($c,$b[0][$i]),0,17);
Странно получается ведь функция strstr находит и возвращает первую позицию вхождения $b[0][$i] в переменной $c до конца переменной $c - то есть по сути это число - и у вас функция substr принимает вырезает 17 символов из найденной строки что весьма странно - мне каежтся проблема с арфиметикой строк (Номерах позиций начала и конца поиска подстроки)
Может все это можно сделать по другому и более очевидно - в чем первоочередная суть задачи?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB