Как получить ширину и высоту изображения из img style? Например:

$str = '<img style="margin-right:10px;width:37px;border:0;" src="icons/icon.png">';

Как получить ширину => 37 пикселей?

Я думаю, если мы напишем ширину в style attr, мы могли бы написать это так:

style="width:37px;"(no space with semicolon)
style="width: 37px;"(space with semicolon)
style="width:37px"(no space no semicolon)
style="width: 37px"(space no semicolon)

Если нет точки с запятой, ширина должна быть записана в конце стиля, например style="height:25px;width:37px"

Так как это сделать проще? регулярное выражение или дом? Спасибо.

1
cj333 22 Янв 2013 в 18:59
1
DOM предоставит вам содержимое атрибута стиля в виде единой монолитной строки. DOM вообще ничего не знает о CSS. Вам нужно будет выполнить синтаксический анализ CSS, как только вы получите всю строку.
 – 
Marc B
22 Янв 2013 в 19:01
Зачем тебе это делать? Разве не было бы полезнее читать фактические размеры изображений или размеры обработанных CSS?
 – 
feeela
22 Янв 2013 в 19:01
Конде, мне нужен рабочий код, не могли бы вы мне помочь?
 – 
cj333
22 Янв 2013 в 19:01
1
Я думаю, что как только вы извлечете атрибут style, простой explode() с точкой с запятой даст вам каждую пару ключ / значение, а другой explode() против двоеточия разделит ключи и значения из каждого Другие.
 – 
WWW
22 Янв 2013 в 19:03

1 ответ

Лучший ответ
$image = '<img src="" style="border-width: 10px; width: 32px;">';
preg_match('/[^-]width[: ]+([0-9]+)/', $image, $matches);
print_r($matches);

$ match [1] должен содержать ваш ответ, и это будет работать, только если вы передадите только строку img, иначе он подберет другую ширину элемента.

4
Toddish 22 Янв 2013 в 19:15
6
border-width: 10px будет соответствовать этому.
 – 
Salman A
22 Янв 2013 в 19:10
Правда, надо было это заметить.
 – 
Toddish
22 Янв 2013 в 19:14