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 :: preg_match_all

 PHP.SU

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


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

> Без описания
crystallon
Отправлено: 10 Декабря, 2009 - 17:24:45
Post Id


Новичок


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


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




Есть txt файл с таким содержанием:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. 32213   10.12.2009 15:26:32     109.122.1.240   ESILDOR 1
  3. 32107   10.12.2009 14:48:17     77.222.147.218  LostHerou       1
  4. 31517   10.12.2009 11:05:36     81.23.24.107    DavidxGuetta    1
  5. 31516   10.12.2009 11:05:09     91.207.27.9     Perfect96       1
  6. 30180   09.12.2009 23:25:48     89.28.98.226    JetBlack        1
  7. 30078   09.12.2009 23:01:34     212.3.111.74    OrtenziO        1
  8.  
  9.  

нужно вытащить из него дату, время и имя(ник), составил следующий код:
$html=@file_get_contents(htmlspecialchars_decode($config['url_info']));
if (preg_match_all("#([0-9]{5}\s+[0-9]{2}.[0-9]{2}.[0-9]{4}\s+[0-9]{2}:[0-9]{2}:[0-9]{2})\t+[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}\t+([0-9a-zA-Z \-\=]*)#",$html,$matches)) {
for($i = 0; $i < count($matches[1]); $i++) {

$time = substr($matches[1][$i],0,20);

if (preg_match("#([a-zA-Z0-9]+)\-([a-zA-Z0-9 -]*)#", $matches[2][$i], $char_matches)) {
if (($server = array_search($char_matches[1])) === false) {
$server = intval($char_matches[1]);
}
$nick = substr($char_matches[2],0,30);
} else {
$server = "0";
$nick = substr($matches[2][$i],0,30);
}
переменная $time должна брать и дату и время, где тут ошибки? Я в этом нуб поэтому думаю что ошибок много.
Заранее спасибо.
 
 Top
EuGen Администратор
Отправлено: 10 Декабря, 2009 - 17:36:18
Post Id


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


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


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




Здесь, я думаю, можно обойтись вообще без регулярных выражений (выиграете по скорости, если файл будет большого размера)
Имею ввиду file+explode
или же
http://php.su/functions/?fgetcsv


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
crystallon
Отправлено: 10 Декабря, 2009 - 17:48:53
Post Id


Новичок


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


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




Как я уже говорил я в этом нубяра, немогли бы вы дополнить свои слова готовым примером?Голливудская улыбка Буду очень вам благодарен))
 
 Top
movEAX
Отправлено: 11 Декабря, 2009 - 08:12:04
Post Id



Частый посетитель


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


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




Если использовать регэкспы то:
PHP:
скопировать код в буфер обмена
  1. $prg =<<<PRG
  2. 32213 10.12.2009 15:26:32 109.122.1.240 ESILDOR 1
  3. 32107 10.12.2009 14:48:17 77.222.147.218 LostHerou 1
  4. 31517 10.12.2009 11:05:36 81.23.24.107 DavidxGuetta 1
  5. 31516 10.12.2009 11:05:09 91.207.27.9 Perfect96 1
  6. 30180 09.12.2009 23:25:48 89.28.98.226 JetBlack 1
  7. 30078 09.12.2009 23:01:34 212.3.111.74 OrtenziO 1
  8. PRG;
  9.  
  10. preg_match_all('!^\d{5}\s(.+:\d{2}).+\.\d{1,3}\s(\w+)!m', $prg, $prg);
  11.  
  12. print_R($ptrg);


Если использовать explode то:
PHP:
скопировать код в буфер обмена
  1. $rows = file(путь);
  2. foreach($rows as $row){
  3.          $row = explode(" ",  $row);
  4.          echo  $row[4].": ".$row[1]."-".$row[2]."<br />";
  5. }

(Отредактировано автором: 11 Декабря, 2009 - 08:12:38)



-----
армия.. самое убогое место
 
 Top
crystallon
Отправлено: 11 Декабря, 2009 - 15:48:34
Post Id


Новичок


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


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




movEAX,
Огромное спасибо =)

(Отредактировано автором: 11 Декабря, 2009 - 15:49:23)

 
 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