|
автор: prigmast (06.03.2006 в 17:31) |
|
| Доброго времени суток уважаемые кодеры!
В php освоен на процентов 15%. Но никак немогу выучить структуру рег. выражений!
Вообщем в аттаче есть страничка.
В ней идет табличка. В таблтчке название сервера, кол-во игроков и статус!
Так вот надо подсчитать с помощью рег.выражений кол-во все игроков на сервере и сложить в одно число. Тоесть сделать : Всего (например 43).
Заранее благодарен! | |
|
|
|
|
|
|
|
для: prigmast
(06.03.2006 в 17:31)
| | Вот чего не понятно, как поступать с числами вида 19 / 30 - какое из двух чисел брать? | |
|
|
|
|
автор: prigmast (07.03.2006 в 14:18) |
|
|
для: cheops
(07.03.2006 в 13:28)
| | Заблы сразу написать...
Но тут не трудно догадатся (19 - число онлайн игроков (его и нужно вытащить) / 30 - макс кол-во (нас не интерисует));
)))) | |
|
|
|
|
|
|
|
для: 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!
Только вот не пойму этот код!
Вы не могли бы растолковать?
Спасибо | |
|
|
|
|
|
|
|
для: prigmast
(08.03.2006 в 19:06)
| | А что не понятно регулярное выражение? | |
|
|
|
|
|
|
|
для: cheops
(08.03.2006 в 21:57)
| | -
Не в тему: Не, надо все таки дать пользователям возможность удалять (скрывать) свои сообщения. Я тут сначала лажанулся а потом пришлось тире ставить :) | |
|
|
|
|
автор: prigmast (08.03.2006 в 22:43) |
|
|
для: Евгений Петров
(08.03.2006 в 22:16)
| | Я понимаю, что нагло просить, но хотелось бы, чтобы Вы сделали нормальный мануал по регулярным выражениям у себя на сайте! | |
|
|
|
|
|
автор: prigmast (09.03.2006 в 17:51) |
|
|
для: cheops
(09.03.2006 в 13:27)
| | Спасибо почитаю....
А мой код объяснить можете ? | |
|
|
|
|
|
|
|
для: 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]. | |
|
|
|