Регулярное выражение, как вырезать с условием

seosniks
На сайте с 13.08.2007
Offline
389
664

Добрый день, всем кто суда заглянул.

Что то туплю. значение small может меняться и иметь x-small

  preg_match("/<span style=\"font-size\: small;\">(.*?)</strong>/is",$fn,$ok4);

как мне подправить регулярку.?

Делать так не хочу

  preg_match("/<span style=\"font-size\: (.*?)small;\">(.*?)</strong>/is",$fn,$ok4);

Надо типа

  preg_match("/<span style=\"font-size\: x-|small;\">(.*?)</strong>/is",$fn,$ok4);

Но что то не пашет.

Спасибо за помощь.

bums
На сайте с 03.07.2006
Offline
442
#1
seosniks:
preg_match("/<span style=\"font-size\: small;\">(.*?)</strong>/is",$fn,$ok4);

стартовый тег span а закрывающий strong?

$fn = '<span style="font-size:small;">bla bla bla</span>';

preg_match("/<span.*>(.*)<\/span>/is",$fn,$ok4);
print_r($ok4);

Array

(
[0] => bla bla bla
[1] => bla bla bla
)

Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
gormarket
На сайте с 29.12.2010
Offline
47
#2

seosniks, попробуйте такой вариант

preg_match("/<span[^<]+small[^<]+>(.*)<\/span>/isU",$fn,$ok4);

[^<] используется для того чтобы small относилось именно к данному span и в (.*) попало только содержимое этого span.

Флаг U нужен для варианта, если есть несколько span, иначе регулярка выберет открывающий тег от первого span, а закрывающий от последнего.

Данный вариант будет некорректно работать если внутри тега span есть вложенные теги span.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
siv1987
На сайте с 02.04.2009
Offline
427
#3

"/<span style=\"font-size:\s*(x-)?small;\">(.*?)<\/span>/is"

seosniks
На сайте с 13.08.2007
Offline
389
#4
bums:
стартовый тег span а закрывающий strong?

$fn = '<span style="font-size:small;">bla bla bla</span>';

preg_match("/<span.*>(.*)<\/span>/is",$fn,$ok4);
print_r($ok4);

Array

(
[0] => bla bla bla
[1] => bla bla bla
)

Спасибо но так не хотелось делать.

preg_match("/<span style=\"font-size\: (.*?)small;\">(.*?)</strong>/is",$fn,$ok4);

---------- Добавлено 23.04.2012 в 14:19 ----------

siv1987:
"/<span style=\"font-size:\s*(x-)?small;\">(.*?)<\/span>/is"

Это мне и надо было. Благодарю Вас..

Всем кто помог, большое спасибо. 🍻

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий