|
|
|
| Это продолжение темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=705...
Блин, что же это они Силу-то другим цветом выделили... Ну это ладно, можно обойти, меня вот какой вопрос мучает, я что-то никаких квадратных скобок не вижу :( | |
|
|
|
|
автор: Данил (29.11.2004 в 07:42) |
|
|
для: cheops
(29.11.2004 в 00:38)
| | У меня также вопрос к знатокам по регулярным выражениям. Есть у меня вот такая строкав коде пхп:
eregi ("(>[0-9]+<)", $line, $numbers);
|
Смысл ее вытаскивать числа из вот такой строки ($line) с HTML таблицей:
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0"><tr align="center"><td class="column_header">Drawing Date</td><td class="column_header" colspan="20">Winning Numbers</td></tr><tr align="center"><td class="column_data">Nov-27-2004</td><td class="column_data" width="20">2</td><td class="column_data" width="20">3</td><td class="column_data" width="20">10</td><td class="column_data" width="20">13</td><td class="column_data" width="20">14</td><td class="column_data" width="20">18</td><td class="column_data" width="20">23</td><td class="column_data" width="20">24</td><td class="column_data" width="20">26</td><td class="column_data" width="20">30</td><td class="column_data" width="20">38</td><td class="column_data" width="20">39</td><td class="column_data" width="20">59</td><td class="column_data" width="20">64</td><td class="column_data" width="20">66</td><td class="column_data" width="20">67</td><td class="column_data" width="20">69</td><td class="column_data" width="20">70</td><td class="column_data" width="20">75</td><td class="column_data" width="20">80</td></tr></table>
|
А проблема состоит в том, что eregi в массив $numbers закидывает только первуею искомую комбинацию ">2<", т.е $numbers [2], $numbers [3] и тд почему то нет! Что я делаю неправильно??? | |
|
|
|
|
|
|
|
для: Данил
(29.11.2004 в 07:42)
| | Стандартные функции никто не долюбливает, так как у них много странностей и неудобный синтаксис, лучше воспользоваться регулярными выражениями Perl:
<?php
$line = '<table> ... </table>';
preg_match_all("|(>[\d]+<)|",$line,$matches);
print_r($matches);
?>
|
http://www.softtime.ru/group/id_group=3 | |
|
|
|
|
автор: Данил (29.11.2004 в 11:51) |
|
|
для: cheops
(29.11.2004 в 10:36)
| | Спасибо, cheops, все задуманное получилось после того, как я допер, что массив $matches двумерный. | |
|
|
|
|
|
|
|
для: Данил
(29.11.2004 в 11:51)
| | А да, я забыл предупредить что цвет параметров может меняться
А вообше регистр букв влияет на обработку кода? | |
|
|
|
|
автор: cheops (из ННГУ) (29.11.2004 в 16:54) |
|
|
для: Ozxar
(29.11.2004 в 14:12)
| | Если после регулярного выражения стоит модификатор i :
"|регулярное выражение|i"
|
то поиск осуществляется без учёта регистра, если этого модификатора нет, то с учётом..
http://www.softtime.ru/dic/id_dic=134&id_group=3 | |
|
|
|
|
|
|
|
для: cheops (из ННГУ)
(29.11.2004 в 16:54)
| | У меня иногда выползает совершенно другой результат. счем это может быть связано
вот код
preg_match("|Сила:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$sil = $matches[2];
}
else {
preg_match("|Сила:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)|i",$text,$matches);
$sil = $matches[1];}
// echo "Сила - ".$sil."<br>";
preg_match("|Ловкость:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$lov = $matches[2];
}
else {
preg_match("|Ловкость:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)|i",$text,$matches);
$lov = $matches[1];}
// echo "Ловкость - ".$lov."<br>";
preg_match("|Удача:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$uda = $matches[2];
}
else {
preg_match("|Удача:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)|i",$text,$matches);
$uda = $matches[1];}
// echo "Удача - ".$uda."<br>";
preg_match("|Здоровье:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$zdrav = $matches[2];
}
else {
preg_match("|Здоровье:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)|i",$text,$matches);
$zdrav = $matches[1];}
// echo "Здоровье - ".$zdrav."<br>";
preg_match("|Знания:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$zna = $matches[2];
}
else {
preg_match("|Знания:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)|i",$text,$matches);
$zna = $matches[1];}
// echo "Знания - ".$zna."<br>";
preg_match("|Мудрость:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(]*\(([\d]+)|i",$text,$matches);
if(isset($matches[2]))
{
$mud = $matches[2];
}
|
| |
|
|
|
|
|
|
|
для: Ozxar
(16.12.2004 в 03:31)
| | вот например отсюда
http://www.neverlands.ru/playerinfo.php?playername=Spellfighter
Здоровье: оказалось равное 10 а на деле всего 9 | |
|
|
|
|
|
|
|
для: Ozxar
(16.12.2004 в 03:38)
| | Немного подправил, а именно добавл после каждого регуляного выражения
<?php
unset($matches);
?>
|
а так же, поправил в каждой из позиций первое регулярное выражение на:
|Сила:<[^<]*<[^<]*<[^<]*<[^>]*> ([\d]+)[^\(<]*\(([\d]+)|i
|
| |
|
|
|