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]   

> Без описания
xsh
Отправлено: 10 Августа, 2011 - 13:52:25
Post Id



Новичок


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


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




Здравствуйте. В PHP совсем новичок. Просьба помочь с написанием скрипта, если и не написать за меня, то хотя бы указать в какую сторону копать.
Имеется исходный .txt файл из которого скриптом надо выдернуть названия доменов и вывести их в новый файл либо же перезаписать этот.
В исходном файле имена доменов (вида domain.com либо просто ссылка без www и http://) располагаются каждый по одному на строчку как и должны, проблему составляют сотни мусорных и пустых ненужных строк, которые нужно отсеять.
Так же нужно как то учесть что в файле домены хоть и разные, но искать думаю надо по принципу если в строчке есть что-то типа .ru .com .net то строчка подходит и отбирается.
Фактически из файла надо отобрать строчки с ссылками.
Искал решение в сети, пробовал то что находил, не помогало.

(Отредактировано автором: 10 Августа, 2011 - 14:02:01)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 14:07:36
Post Id



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


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


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




А можно содержимое файла увидеть?
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 14:18:51
Post Id



Новичок


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


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




DeepVarvar пишет:
А можно содержимое файла увидеть?

пожалуйста, файл примерно такого вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1. ID: 761770 · 343533854 | whois: 10.08.1998
  2. Ур. 2 · Фото
  3. YACA категория: Культура > ... > Художественное фото
  4. WLBLGBL YACADMOZYAPGC
  5. soprotivlenie.org
  6.  
  7. ID: 761740 · 343403438 | whois: 15.11.2006
  8. Ур. 2 · Новости и СМИ
  9. YACA категория: Общество > ... > Защита гражданских прав
  10. WLBLGBL YACADMOZYAPGC
  11. transmap.ru/articles/3
  12.  
  13. ID: 761777 · 343546894 | whois: 20.11.2007
  14. Ур. 2 · Товары и услуги
  15. YACA категория: Бизнес > ... > Экспедирование и перевозка грузов
  16. WLBLGBL YACADMOZYAPGC
  17. photographer.ru

и т.д.

(Отредактировано автором: 10 Августа, 2011 - 14:20:38)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
ams
Отправлено: 10 Августа, 2011 - 14:50:07
Post Id



Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file('aa.txt');
  3. foreach($file as $v)
  4. {
  5.         if (preg_match('//*регулярное выражение*//i',$v))
  6.                 echo $v;
  7. }
  8.  


В регулярных я не очень Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 15:55:52
Post Id



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


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


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




ams еще короче
PHP:
скопировать код в буфер обмена
  1. $file = file('aa.txt');
  2. preg_match_all('//*регулярное выражение*//i',$file,$matches);

xsh вам осталось только регулярку найти сюда.
У меня гдето была, писать и думать некогда в данный момент, не могу отвлечься и на поиск...
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 16:11:36
Post Id



Новичок


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


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




собственно вот что написал, но скрипт не работает, где ошибся?

PHP:
скопировать код в буфер обмена
  1.     $file = file('domains.txt');
  2.     preg_match_all('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i',$file,$matches);
  3. echo $matches;

(Отредактировано автором: 10 Августа, 2011 - 16:34:50)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 16:54:51
Post Id



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


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


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





Это массив
(Добавление)
А!!!! и не file("domains.txt"); а file_get_contents("domains.txt");
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 16:59:01
Post Id



Новичок


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


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




DeepVarvar я явно что-то не то делаю

PHP:
скопировать код в буфер обмена
  1.         $file = file_get_contents("domains.txt");
  2.         preg_match_all('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i',$file,$matches);
  3.     var_dump($matches);

PHP Warning: preg_match_all(): Unknown modifier '/' in /var/www/1.php on line 3
NULL
и у меня наверное регулярка еще не совсем та
(Добавление)
попробовал с этой регуляркой /[a-z0-9_\.]{4,}/i скрипт работает но теперь в результаты попадает лишняя инфа, попробую подобрать регулярку и дописать чтобы в файл записывалось

(Отредактировано автором: 10 Августа, 2011 - 17:02:38)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
dzubchik
Отправлено: 10 Августа, 2011 - 17:18:46
Post Id



Гость


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


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




xsh пишет:
DeepVarvar я явно что-то не то делаю

PHP:
скопировать код в буфер обмена
  1.         $file = file_get_contents("domains.txt");
  2.         preg_match_all('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i',$file,$matches);
  3.     var_dump($matches);

PHP Warning: preg_match_all(): Unknown modifier '/' in /var/www/1.php on line 3
NULL
и у меня наверное регулярка еще не совсем та
(Добавление)
попробовал с этой регуляркой /[a-z0-9_\.]{4,}/i скрипт работает но теперь в результаты попадает лишняя инфа, попробую подобрать регулярку и дописать чтобы в файл записывалось

а разве не нужно экранировать /
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 17:26:30
Post Id



Новичок


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


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




dzubchik знать бы еще как..сейчас посмотрю..
PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file_get_contents("domains.txt");
  3. preg_match_all('/[a-z0-9_\.]{4,}/i',$file,$matches);
  4. file_put_contents("result.txt",$matches."\r\n", FILE_APPEND);
  5. echo "Сохранено";

вот что сделал, но не работает.
(Добавление)
итак после экспериментов с регулярками и рендомными pressanykey получилось вот что:
PHP:
скопировать код в буфер обмена
  1. $file = file_get_contents("domains.txt");
  2. preg_match_all('/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/',$file,$matches);
  3. var_dump($matches[1]);

выводит с виду правильный список в консоль:
array(4) {
[0]=>
string(7) "hare.ru"
[1]=>
string(15) "fl0ra-fauna.net"
[2]=>
string(11) "wpskins.com"
[3]=>
string(12) "spbgunews.ru"
}
как можно это теперь сохранить в файл? пробовал так:
не работает

(Отредактировано автором: 10 Августа, 2011 - 19:20:15)



-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 19:21:10
Post Id



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


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


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




dzubchik пишет:
а разве не нужно экранировать /

нужно: \/\/
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 19:29:12
Post Id



Новичок


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


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




DeepVarvar да вопрос с экранированием уже отпал, поскольку у меня все равно нет в ссылках http:// так что и экранировать не нужно, регулярку я подобрал, как мне это теперь правильно в файл записать?


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 19:33:43
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $data = false;
  2. if (count($matches[1]) > 0)
  3.   foreach ($matches[1] as $item) $data .= "$item\r\n";
  4. if ($data) file_put_contents("result.txt",$data);
  5. else die("Ничего не найдено..");
 
 Top
xsh
Отправлено: 10 Августа, 2011 - 20:43:10
Post Id



Новичок


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


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




DeepVarvar, спасибо большое, работает


-----
$хикикомори()
goodlook...goodtime...connect... offline...
 
 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