Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Вытащить элемент из тэга: возможно ли упростить?


Автор: Gold Dragon 31.1.2013, 20:38
задача вытащить значение float из тэга..
вот примеры ссылок (возможно есть ещё варианты)
Код

 $value[0] = array(
          '<img style="width:1024px;height:512px;float : right" src="http://solotin.qqq/images/stories/admin/untitled/image_png.png" />',
          '<img style="width:1024px;float:right;height:512px;" src="http://solotin.qqq/images/stories/admin/untitled/image_png.png" />',
          '<img style="float: right;width:1024px;height:512px;" src="http://solotin.qqq/images/stories/admin/untitled/image_png.png" />',
          '<img style="width:1024px;height:512px;float :right" src="http://solotin.qqq/images/stories/admin/untitled/image_png.png" />'
)

вот регулярка
Код

$img_style = (preg_match('#style=(["\'])(.*?)float[\s]*:[\s]*(.*?)(;|["\'])#si', $value[0], $temp)) ? trim($temp[3]) : '';


Возможно ли как то её упростить и главное, отловит ли она все варианты?

Автор: patap 1.2.2013, 13:06
мой вариант
Код

style=["\'].*?float\s*:\s*(\w+)


Добавлено через 6 минут и 40 секунд
[\s]*(.*?)(;|
у тебя под это условие пробелы попадут, которые после значения будут

Добавлено через 9 минут и 37 секунд
думаю даже такого будет вполне хватать и все наглядно
Код

float\s*:\s*(left|right|none|inherit)

Автор: Gold Dragon 1.2.2013, 13:21
проверил, работает. Решение симпатичнее smile заимствую... вот только наверное не \w а [a-z]? всё равное там больше букв ничего не должно быть

Автор: patap 1.2.2013, 13:25
Цитата(Gold Dragon @  1.2.2013,  12:21 Найти цитируемый пост)
наверное не \w а [a-z]

ну да, или как я выше написа через жесткие значения

Автор: Gold Dragon 1.2.2013, 13:31
кстати, да

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)