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

Sveta

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

Доброе вр. суток!

Подскажите, как мне вынуть то что между тегами с помощью рег. вырвжения (цыфры меняются, формат тот же) и запихнуть в переменную?

<B><B></B>&#50&#46&#49&#48&#57&#53<B></B></b
<i></i> <i></i>&#48&#46&#54&#55&#52&#56<i></i></b>
<i><font></b></font></i>&#50&#46&#49&#48&#57<b><i><font></b>
 

sakon

П..и.н..ок
Весь текст в одну переменную?
PHP:
<?php
$str = '<B><B></B>&#50&#46&#49&#48&#57&#53<B></B></b>
<i></i> <i></i>&#48&#46&#54&#55&#52&#56<i></i></b>
<i><font></b></font></i>&#50&#46&#49&#48&#57<b><i><font></b>';
$str1 = preg_replace('/<.*?>/','',$str);
echo $str1;
?>
 

Sveta

Guest
Не совсем так, мне не нужно полностью избавляться от тегов, потаму что на странице имеется так же и другой текст вне тэгов. Нужно конкретно рег. выр-е для &#50&#46&#49&#48&#57&#53, причем цыфр может быть либо 5 либо 6, т.е. получить это значение в переменной, а поиск ведется по всему html-файлу.
Значение это в файле одно, но они так круто завернули, что меняют теги каждый раз вокруг него.

-~{}~ 20.09.05 21:44:

sakon
Хотя Вы знаете, это все же хороший пример, теперь осталось вынуть это выражение из
</td> <td bgcolor=#ffffff>&nbsp; <B><B></B>&#50&#46&#49&#48&#57&#51<B></B></b></td></tr><tr><td bgcolor=#ffffff align=right>

причем теги вокруг него меняются, получится ли?

-~{}~ 20.09.05 21:45:

т.е. там еще появился перевод строки и "&nbsp"
 

sakon

П..и.н..ок
preg_match('/<\/.*?>((&#\d{2}){5,6})</',$str,$str1);

echo $str1[1];
Вместо preg_replace........
 

Sveta

Guest
sakon

Спасибо пребольшое - все получилось!!!
Ура!!!
 

Sveta

Guest
preg_match('/<\/.*?>((&#\d{2}){5,6})</',$str,$str1);

а как написать, что бы не 5,6 раз повторялось, а сколько угодно раз?
 

Sveta

Guest
dorfey
Спасибки))

.... я наверно наглею, а не подскажите как написать выражение, если у меня число 123.456789 а отобразить нужно только 123,45 или 0,12345678 а отобразить 0,1234 - т.е. всего 6 знаков отображать
 

Sveta

Guest
preg_match('/<\/.*?>((&#\d{2}){*})</',$str,$str1); - так не находит это число((
 

whirlwind

TDD infected, paranoid
фигурные скобки убери

... вокруг звездочки, а то у тебя ограничителем квантификатора является квантификатор :)
 

Sveta

Guest
мне нужно что бы выражение
(&#\d{2}) повторялось 4 и более раз
 

whirlwind

TDD infected, paranoid
ограничитель квантификатора

* - от нуля включительно
+ - от единицы включительно
{x} - ровно указанное кол-во повторений
{x,y} - в промежутке включительно (допустимы конструкции {x,} и {,y})
? - возможный минимум совпдений

т.е. для твоего случая

preg_match('/<\/.*?>((&#\d{2}){4,})</',$str,$str1);
 

Sveta

Guest
dorfey
смех смехом, а вообще-то не работает так
preg_match("/((&#\d{2}){4,})/U", $html_string, $select);
т.е. если там 5 или 6 раз посторяется, то берет все-равно только 4 ((((((((((((((
 

sakon

П..и.н..ок
PHP:
preg_match_all("/((&#\d{2}){4,})/", $html_string, $select);
все прекрасно работает......
 

whirlwind

TDD infected, paranoid
Sveta пробелов не должно быть внутри {4,}. и кто здесь говорил про использование модификатора U? если с ним, то все правильно - жадность любого квантификатора ограничивается минимальным кол-вом совпадений, в данном случае как ты и указала 4.
 
Сверху