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

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

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

 

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

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

тема: Помогите составить регулярку
 
 автор: Max Vasin   (02.04.2008 в 21:40)   письмо автору
 
 

В общем необходимо разобрать такой код:
<TOPEVENT time="6"/>
<a name=526023><div class=cap>Баскетбол. NBA</div></a>
<pre><hr color=#CC0033 noshade>
<br> Дата  Событие          <b>Поб.1</b>  НичьяХ  Поб.2 <b >  фора1=>кф1  </b>  фора2=>кф2     <b>тотал</b>  мен.  бол. <hr color=#CC0033 noshade>
<ITEMEVENT time="6"/>02/04 <b id=r>1)Орландо       </b> <b >2.01 </b>  12.50   1.79   <b > +1.0=>1.90  </b>  -1.0=>1.80   <b >  209.5</b>  1.80  1.90
 03:00 <b id=r>2)Нью-Орлеан    </b>

<ITEMEVENT time="6"/>02/04 <b id=r>1)Нью-Джерси    </b> <b >2.10 </b>  10.50   1.78   <b > +1.5=>1.85  </b>  -1.5=>1.85   <b >  201.0</b>  1.85  1.85
 03:30 <b id=r>2)Филадельфия   </b>

 <ITEMEVENT time="6"/>02/04 <b id=r>1)Хозяева       </b> <b >     </b>                 <b > -3.5=>1.85  </b>  +3.5=>1.85   <b >       </b>
 03:00 <b id=r>2)Гости         </b>                                                                                          
         8 матчей
</pre>
<ENDPREVIEW/>

<TOPEVENT time="2"/><a name=526062><div class=cap>Баскетбол. Мужчины. Евролига ULEB. 1/4 финала. До 2-х побед. Первые матчи</div></a>
<pre><hr color=#CC0033 noshade>
<br> Дата  Событие        <b>Поб.1</b>  НичьяХ  Поб.2 <b >  фора1=>кф1  </b>  фора2=>кф2     <b>тотал</b>  мен.  бол. <hr color=#CC0033 noshade>
 <ITEMEVENT time="2"/>01/04 <b id=r>1)Монтепаски  </b> <b >1.06 </b>  14.00   8.50   <b >-12.5=>1.75  </b> +12.5=>1.95   <b >  152.5</b>  1.85  1.85
 22:30 <b id=r>2)Фенербахче  </b>

 <ITEMEVENT time="2"/>01/04 <b id=r>1)Таугрес     </b> <b >1.10 </b>  18.00   6.00   <b >-12.0=>1.85  </b> +12.0=>1.85   <b >  157.5</b>  1.90  1.80
 22:30 <b id=r>2)Партизан    </b>

</pre><ENDPREVIEW/>


преобразовать в такой вот массивчик:

Array
(
    [0] => Array
(
            [champ] => Array
                (
                    [0] => Array 
            ([date]=>02/04
             [time]=>03:00
             [team1]=>Орландо
             [team2]=>Нью-Орлеан
             [win1]=>2.01
             [awin]=>12.50
             [win2]=>1.79
             [w1]=>2.01
        )
)
)


Помогите, плиз

----
Regards, Max Vasin.

   
 
 автор: _ _   (02.04.2008 в 23:58)
 
   для: Max Vasin   (02.04.2008 в 21:40)
 

< [win1]=>2.01
< [awin]=>12.50
< [win2]=>1.79
< [w1]=>2.01

два раза 2.01 ;)

<?
$TXT 
'<TOPEVENT time="6"/> 
<a name=526023><div class=cap>Баскетбол. NBA</div></a> 
<pre><hr color=#CC0033 noshade> 
<br> Дата  Событие          <b>Поб.1</b>  НичьяХ  Поб.2 <b >  фора1=>кф1  </b>  фора2=>кф2     <b>тотал</b>  мен.  бол. <hr color=#CC0033 noshade> 
<ITEMEVENT time="6"/>02/04 <b id=r>1)Орландо       </b> <b >2.01 </b>  12.50   1.79   <b > +1.0=>1.90  </b>  -1.0=>1.80   <b >  209.5</b>  1.80  1.90 
 03:00 <b id=r>2)Нью-Орлеан    </b> 

<ITEMEVENT time="6"/>02/04 <b id=r>1)Нью-Джерси    </b> <b >2.10 </b>  10.50   1.78   <b > +1.5=>1.85  </b>  -1.5=>1.85   <b >  201.0</b>  1.85  1.85 
 03:30 <b id=r>2)Филадельфия   </b> 

 <ITEMEVENT time="6"/>02/04 <b id=r>1)Хозяева       </b> <b >     </b>                 <b > -3.5=>1.85  </b>  +3.5=>1.85   <b >       </b> 
 03:00 <b id=r>2)Гости         </b>                                                                                           
         8 матчей 
< /pre> 
<ENDPREVIEW/> 

<TOPEVENT time="2"/><a name=526062><div class=cap>Баскетбол. Мужчины. Евролига ULEB. 1/4 финала. До 2-х побед. Первые матчи</div></a> 
<pre><hr color=#CC0033 noshade> 
<br> Дата  Событие        <b>Поб.1</b>  НичьяХ  Поб.2 <b >  фора1=>кф1  </b>  фора2=>кф2     <b>тотал</b>  мен.  бол. <hr color=#CC0033 noshade> 
 <ITEMEVENT time="2"/>01/04 <b id=r>1)Монтепаски  </b> <b >1.06 </b>  14.00   8.50   <b >-12.5=>1.75  </b> +12.5=>1.95   <b >  152.5</b>  1.85  1.85 
 22:30 <b id=r>2)Фенербахче  </b> 

 <ITEMEVENT time="2"/>01/04 <b id=r>1)Таугрес     </b> <b >1.10 </b>  18.00   6.00   <b >-12.0=>1.85  </b> +12.0=>1.85   <b >  157.5</b>  1.90  1.80 
 22:30 <b id=r>2)Партизан    </b> 

</pre><ENDPREVIEW/>'
;

$array = array();
function 
arr_push($match)
{
 global 
$array;
 
$array[] =preg_split('#(?:\s+|(?:<[^>]+>)+)+#s'$match[0], -11);
 return 
'';
}

$re '#(?<=<ITEMEVENT time="."/>)(?:(?!<ENDP|<ITEME).)+#s';
//preg_match_all($re, $TXT, $TXT);
//print_r($TXT);

preg_replace_callback($re'arr_push'$TXT);
print_r($array);
?>

наверное как-то при помощи preg_replace_callback или preg_match_all нужно делать
что-то похожее на это , только 'это' не станет работать если Нью-Орлеан напишут с пробелом,
или напишут Хозяева </b> <b > </b> <b > -3.5=>1.85 </b> +3.5=>1.85 <b > </b>
03:00 <b id=r>2)Гости

и догадайси потом чегоито там нехватало , с началами концами строк ещё можно работать , если с /m

но пробелы считать как-то не интересно )

   
 
 автор: Max Vasin   (03.04.2008 в 16:41)   письмо автору
 
   для: _ _   (02.04.2008 в 23:58)
 

спасибо),
как Вы и указали, что если будет пробел, то будет несовсем корректно работать.
Но я решил, проверять элемент массива на число/не число. и в принципе все готово)
сечас как раз попробую.
еще раз спасибо)

----
Regards, Max Vasin.

   
Rambler's Top100
вверх

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