[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: изменение атрибутов тэга img
BadJack
Доброго пятничного настроения!
Задача:
Не создавая миниатюр вывести изображение в уменьшенном варианте (изменить значение атрибутов width и height тега img)

Скрипт:

function chenge_width($mch)
{
$mch[0] = str_replace($mch[1],'20', $mch[0]);
return $mch[0];
}

function chenge_height($mch)
{
$mch[0] = str_replace($mch[1],'20', $mch[0]);
return $mch[0];
}


function get_tag_img($match)
{
preg_replace_callback('#width="*(.+?)"#si', 'chenge_width', $match[0]);
preg_replace_callback('#height="*(.+?)"#si', 'chenge_height', $match[0]);

return $match[0];
}

$text = '<p>
<img class="super_pic" width="300" height="70" alt="" src="/fa2.gif" title="">
вот такая тестовая запись вот такая тестовая запись</p>'
;

echo preg_replace_callback('#\<img (.*?)\>#si', 'get_tag_img', $text);


Подскажите где я ошибаюсь?



Спустя 16 минут, 12 секунд (13.07.2012 - 13:01) bodja написал(а):
Ошиблись в выборе языка на JS это решается в три строчки.
var img=document.getElementsByClassName('super_pic');
img[0].style.width='300px';
img[0].style.height='70px';


Спустя 4 минуты, 39 секунд (13.07.2012 - 13:06) BadJack написал(а):
Спасибо за быстрый ответ smile.gif
А если имя класса динамическое и картинок штук 10 на страницу (в первоисточнике class="alignnone size-full image-8")?

Спустя 7 минут, 31 секунда (13.07.2012 - 13:14) bodja написал(а):
document.getElementsByClassName('super_pic')
вам вернул массив картинок.
img[0] это была первая картика wink.gif
Есть другие селектора например
getElementsByTagName('img')
Найти нужный элемент по тегу,ид или классу не является проблемой ,было бы желание.

Спустя 26 минут, 34 секунды (13.07.2012 - 13:40) BadJack написал(а):
Так уж вышло, что я с js дружен гораздо меньше, чем с PHP smile.gif
Опять же вариант php мне нравится тем, что я могу перед выводом изувечить картинку, не задумываясь где она в списке элементов и как ее звать.
Я знаю где генерируется текст перед выводом на экран и просто хочу "исправить имеющиеся досадные недоразумения".

Вы меня натолкнули на мысль: исправить имя класса, а габариты задать через css возможно это лучший вариант wink.gif

Спустя 1 час, 47 минут, 53 секунды (13.07.2012 - 15:28) BadJack написал(а):
осознал свою ошибку :D
вот правильная функция:
function get_tag_img($match)
{
$match[0] = preg_replace_callback('#height="*(.+?)"#si', 'chenge_height', $match[0]);
$match[0] = preg_replace_callback('#width="*(.+?)"#si', 'chenge_width', $match[0]);
return $match[0];
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.