Регулярные выражния.

  • Автор темы slavaua
  • Дата начала

slavaua

Guest
Регулярные выражния.

Есть HTML страница схема построения приблизительно такая:

.*
<xxx.*>
.*
<y.*>$55.5</y>
.*
<y.*>$88.6</y>
.*
</xxx>
<xxx>
.*
<y>$56.9</y>
.*
</xxx>
.*

Нужно рег. выражение для preg_match_all(), которое бы выбирало последнюю цену, тоесть я так думаю что есть возможность сделать результатом выполнения функции массив типа

Array+\- 0 - |55.5|
+++++\ |88.6|
+++++\- 1 - |56.9|

(извините за корявую схему, но думаю вы поняли)

Подскажите, пожалуйста, правильное регулярное выражение.
Просьба не отправлять на http://phpfaq.ru/regexp http://ru2.php.net/manual/ru/reference.pcre.pattern.syntax.php и т.д., т.к. прочитано давно.
 

bgm

&nbsp;
PHP:
echo "<pre>";

$source = ".*<xxx.*> .* <y.*>$55.5</y> .* <y.*>$88.6</y> .*</xxx> <xxx>  .* <y>$56.9</y> .* </xxx> .*";

$reg = "|<y[^>]*>(.*)</y>|U";

preg_match_all ( $reg, $source, $result);

var_dump($result);
 

slavaua

Guest
Массив должен быть ассоциированым, с разделением тегом </xxx>, тоесть на предыдущем примере
Array [0][1] == 86.6
Array [1][0] == 56.9

p.s. я ж вроде объяснял...
 

bgm

&nbsp;
Разбиваешь задачу на два этапа:

1) "/<xxx[^>]*>(.*)<\/xxx>/U"

2) Полученный массив обрабатываешь "/<yyy[^>]*>(.*)<\/yyy>/U"
 

slavaua

Guest
На два то понятно... Весь прикол как сделать это все в один заход
 

slavaua

Guest
Видать придется... Я сюда приходил за ответом как сделать в один оборот.
ОК, тема закрыта.
 
Сверху