Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: IMG SRC в html-файле. Как изменить Width и убрать Height?
Форумы портала PHP.SU » » Вопросы новичков » IMG SRC в html-файле. Как изменить Width и убрать Height?

Страниц (1): [1]
 

1. LShark - 01 Декабря, 2012 - 21:05:55 - перейти к сообщению
Есть разные, загружаемые на сайт через форму HTML документы.

Во многих есть картинки (загружается одновременно).

Естественно, ссылка на картинки идет через
<img src="путь до картинки" width=xxx height=xxx>
или
<img width=xxx height=xxx src="путь до картинки">

Причем размеры "ххх" могут быть как просто, так и в кавычках или процентах (width=300, width="300" или width=70%) и естественно, совершенно разные.

Однако из за этого могут оказываться картинки значительного размера (мелкие роли не играют, их перерабатывать не нужно), которые при последующем выведении уродуют дизайн.

Как удалить все теги размеров, если ширина больше 700 и выставить тег "width=700" ?

т.е.

если указанный width <700 - ничего не делаем, если больше 700 - выставляем жестко 700.

Увы, размеры самого файла-картинки менять нельзя (а то бы просто размеры порезал и теги удалил).

Заранее спасибо.
2. LShark - 02 Декабря, 2012 - 19:14:31 - перейти к сообщению
Учитывая, что что то все молчат - уточню и упрощу задачу.

Как выявить все сочетания width=(что угодно до пробела или до закрывающего >) (например - 'width=765 ' или 'width="598" ' или 'width=450>' )
Желательно, чтобы значение width я мог бы проверить и при превышении 700 пикселов - установить на 700.

И как просто удалить ВСЕ теги height с аналогичным условием (т.е. этот тег вообще удалить, пусть картинка пропорционально меняется в зависимости от Width)

Вроде задача вполне теперь простая, но что то моих мозгов на регулярные никогда не хватало... Недовольство, огорчение
3. KingStar - 02 Декабря, 2012 - 19:49:21 - перейти к сообщению
в css

CODE (html):
скопировать код в буфер обмена
  1. img
  2. {
  3.      max-width: 700px;
  4. }
4. NoPaper - 02 Декабря, 2012 - 20:17:41 - перейти к сообщению
или через php
PHP:
скопировать код в буфер обмена
  1. $data = getimagesize('image.png');
  2. $width = $data[0];
  3. $height = $data[1];
5. LIME - 02 Декабря, 2012 - 22:31:33 - перейти к сообщению
img {
max-width: 700px !important;
}
6. KingStar - 03 Декабря, 2012 - 08:56:22 - перейти к сообщению
LIME если мне память не изменяет - приоритетной стили, а у него атрибутом указан, хотя... не помешает Подмигивание
7. isvetlichniy - 03 Декабря, 2012 - 09:31:14 - перейти к сообщению
Цитата:
Желательно, чтобы значение width я мог бы проверить и при превышении 700 пикселов - установить на 700.

не нужно ничего проверять.
вас элементарно спасет css

напишите класс для картинок ну или установите стиль для всех картинок на странице
CODE (htmlphp):
скопировать код в буфер обмена
  1. img {
  2.  max-width: 700px;
  3.  }


не будет работать в IE6, но я думаю сегодня это уже не актуально
8. KingStar - 03 Декабря, 2012 - 10:36:15 - перейти к сообщению
isvetlichniy Радость Радость Радость вообще-то уже ответ дали, зачем повторятся Хм
9. isvetlichniy - 03 Декабря, 2012 - 10:40:31 - перейти к сообщению
KingStar,
за: 2
против: 0
воздержались: 0

Улыбка
10. LShark - 05 Декабря, 2012 - 20:37:42 - перейти к сообщению
Спасибо, братья.
Что-то я действительно прозевал возможность заCSSить это...
Ща попробую и отпишусь, если что...
(Добавление)
Хм... результат не самый лучший, так как ШИРИНА то выставляется, но ВЫСОТА остается прежней...

Хотя кто мне мешает зарубить тег Height везде прегреплейсом?
11. isvetlichniy - 05 Декабря, 2012 - 20:43:19 - перейти к сообщению
пробуй вот такую комбинацию (высоту свою поставь)

CODE (htmlphp):
скопировать код в буфер обмена
  1. img {
  2. max-width: 700px;
  3. max-height: 300px;
  4.  }
12. LShark - 05 Декабря, 2012 - 21:07:12 - перейти к сообщению
isvetlichniy пишет:
пробуй вот такую комбинацию (высоту свою поставь)

Увы, необходимо, чтобы пропорции картинок были сохранены. Т.е. если картинка будет 300х9000, то высота в 9000 - нормально.

В идеале, конечно, просто удалить теги Height, но моих знаний в регулярных не хватает, а курить мануалы не получается.

Подскажите регулярное выражение для прег-реплейса, удаляющее следующие варианты тегов height - болдом то, что наду удалить:
height="ххх" src=путь к файлу (ххх - цифры)
height=ххх src=путь к файлу
src=путь к файлу height="ххх">
src=путь к файлу height=ххх>

Упс, забыл еще 2 варианта:
height="ххх"
src=путь к файлу (т.е. в 2 строки, после " нет пробела и перед src нет пробела)
height=ххх
src=путь к файлу (аналогично - 2 строки)

Пытался через
height=.*?( >)
но тогда кастрирует все до следующего ">", т.е. первые 2 варианта не срабатывают.
(Добавление)
Правильно ли получится:
1 чистка:
height=.*?[(\r\n) ] - замена на '' (убираются варианты, когда после тега height идет перенос строки или пробел
2 чистка:
height=.*?> - заменяем на > (убирается тег height, закрывающий картинки)

Понимаю, что коряво, но на больее меня пока не хватило.
(Добавление)
Ну и еще прикол - тупой осел такой тупой, мля...
IE8 - да, по стилям обрезает размер картинки по ширине, но СТРАНИЦУ отображает, как будто ширина все еще офигенная (т.е. тупо слева остается широченное поле).

Ну и он единственный уроде, который тег height="" воспринимает как height="1", а не как отсутствие тега...

 

Powered by ExBB FM 1.0 RC1