Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Узнаем значения и суммируем их
 
 автор: prigmast   (06.03.2006 в 17:31)
 
 

Доброго времени суток уважаемые кодеры!
В php освоен на процентов 15%. Но никак немогу выучить структуру рег. выражений!
Вообщем в аттаче есть страничка.
В ней идет табличка. В таблтчке название сервера, кол-во игроков и статус!
Так вот надо подсчитать с помощью рег.выражений кол-во все игроков на сервере и сложить в одно число. Тоесть сделать : Всего (например 43).
Заранее благодарен!

   
 
 автор: cheops   (07.03.2006 в 13:28)   письмо автору
 
   для: prigmast   (06.03.2006 в 17:31)
 

Вот чего не понятно, как поступать с числами вида 19 / 30 - какое из двух чисел брать?

   
 
 автор: prigmast   (07.03.2006 в 14:18)
 
   для: cheops   (07.03.2006 в 13:28)
 

Заблы сразу написать...
Но тут не трудно догадатся (19 - число онлайн игроков (его и нужно вытащить) / 30 - макс кол-во (нас не интерисует));
))))

   
 
 автор: cheops   (08.03.2006 в 13:13)   письмо автору
 
   для: prigmast   (07.03.2006 в 14:18)
 

Тогда можно поступить следующим образом
<?php
  $str 
file_get_contents("14054-20060306172728.htm");
  
$pattern "#<b>([\d]+)([\s]|<)#isU";
  
preg_match_all($pattern$str$out);
  echo 
array_sum($out[1]);
?>

   
 
 автор: prigmast   (08.03.2006 в 19:06)
 
   для: cheops   (08.03.2006 в 13:13)
 

Спасибо cheops!
Только вот не пойму этот код!
Вы не могли бы растолковать?
Спасибо

   
 
 автор: cheops   (08.03.2006 в 21:57)   письмо автору
 
   для: prigmast   (08.03.2006 в 19:06)
 

А что не понятно регулярное выражение?

   
 
 автор: Евгений Петров   (08.03.2006 в 22:16)   письмо автору
 
   для: cheops   (08.03.2006 в 21:57)
 

-
Не в тему: Не, надо все таки дать пользователям возможность удалять (скрывать) свои сообщения. Я тут сначала лажанулся а потом пришлось тире ставить :)

   
 
 автор: prigmast   (08.03.2006 в 22:43)
 
   для: Евгений Петров   (08.03.2006 в 22:16)
 

Я понимаю, что нагло просить, но хотелось бы, чтобы Вы сделали нормальный мануал по регулярным выражениям у себя на сайте!

   
 
 автор: cheops   (09.03.2006 в 13:27)   письмо автору
 
   для: prigmast   (08.03.2006 в 22:43)
 

Вообще говоря они не плохо (конечно, можно лучше) описаны в справочнике функций
http://www.softtime.ru/dic/id_dic=134&id_group=3
http://www.softtime.ru/dic/id_dic=133&id_group=3
И в наших off-line-вых книгах http://www.softtime.ru/php5/index.php

   
 
 автор: prigmast   (09.03.2006 в 17:51)
 
   для: cheops   (09.03.2006 в 13:27)
 

Спасибо почитаю....
А мой код объяснить можете ?

   
 
 автор: cheops   (10.03.2006 в 01:46)   письмо автору
 
   для: prigmast   (09.03.2006 в 17:51)
 

Конечно, строка
<?php
  $str 
file_get_contents("14054-20060306172728.htm"); 
?>

Читает содержимое HTML-файла в переменную $str, в которой при помощи регулярного выражения
<?php
  $pattern 
"#<b>([\d]+)([\s]|<)#isU"
?>

ищутся цифры, каждую цифру предваряет тэг <b>, который и является маркером для начала вхождения, после тэга <b> должна следовать одна или более цифр ([\d]+) после цифры может идти как пробел [\s], так и символ <, поэтому мы разделяем их ИЛИ | (\s]|<). Фунция
<?php
preg_match_all
($pattern$str$out); 
?>

ищит все соответстия регулярному выражению $pattern и помещает их в двумерный массив $out. $out[0] содержит подстроки, удовлетворяющие всему регулярному выражению, $out[1] - подстроки соответствующие первым круглым скобкам, $out[2] - вторым круглым скобкам. Так как нужные нам цифры определяются первыми круглыми скобками ([\d]+) - далее мы работаем только с $out[1], который передаём функции
<?php
  
echo array_sum($out[1]); 
?>

функция суммирует значения массива $out[1].

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования