Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,836

Обрамление картинки ссылкой

20.05.2016, 11:20. Показов 828. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, с регулярками не дружу. В общем задача такая. Есть текст с большими картинками. Хочу сделать так, чтоб их можно было открывать fancybox-ом а сами картинки уменьшить. Т.е. из этого
HTML5
1
<img src="ссылка-1" />
сделать вот так
HTML5
1
<a href="ссылка-1" class="fancybox"><img src="ссылка-2"></a>
В интернете нашел готовую регулярку
PHP
1
2
3
$text = 'текст с картинками'
$arSrc = preg_match_all('/(img|src)=("|\')[^"\'>]+/i',  $text, $media);
$arSrc = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', "$3", $media[0]);
получаю массив картинок вида array("src1", "src2" и т.д.). Далее обрабатываю массив, уменьшаю картинки, формирую второй массив с src уменьшенных картинок. В результате имеется текст с картинками и 2 массива с src. Как теперь все это привести к нужному виду? В изначальном теге img могут быть различные атрибуты. Хорошо бы их сохранить, ну или удалить, если по другому никак.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2016, 11:20
Ответы с готовыми решениями:

Обрамление картинки рамкой
Хочу обрамить картинку рамкой, которая тоже картинка. Как это сделать? Думал простая задача, но уже 3 часа бьюсь, не получается. Пробовал...

Как сделать обрамление <ul> из картинки?
Привет всем. Недавно начал делать меню и столкнулся с такой проблемой как обрамлять &lt;ul&gt; картинкой, для небольшой ясности дам...

Карты. Как часть картинки сделать ссылкой
у меня есть картинка и мне надо на ней сделать 4 ссылки. я написал код но как-то не правильно задал usemap. у меня работает только первая...

6
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
21.05.2016, 10:36
Цитата Сообщение от sad67man Посмотреть сообщение
<img src="ссылка-1" />
Цитата Сообщение от sad67man Посмотреть сообщение
<a href="ссылка-1" class="fancybox"><img src="ссылка-2"></a>
а ссылка-2 откуда берется?
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,836
21.05.2016, 10:56  [ТС]
pav1uxa, Из массива. Я все описал в вопросе.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
21.05.2016, 13:24
Цитата Сообщение от sad67man Посмотреть сообщение
Из массива. Я все описал в вопросе.
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$html = <<<HTML
<img src="ссылка-1" />
HTML;
 
$a = ["ссылка-1" => "ссылка-2"];
 
foreach ($a as $k => $v)
    $html = preg_replace("/".preg_quote($k, '/')."/", $v, $html);
 
echo "<pre>".htmlspecialchars($html)."</pre>";
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,836
21.05.2016, 13:57  [ТС]
pav1uxa,
Цитата Сообщение от pav1uxa Посмотреть сообщение
<?php
$html = <<<HTML
<img src="ссылка-1" />
HTML;
$a = ["ссылка-1" => "ссылка-2"];
foreach ($a as $k => $v)
* * $html = preg_replace("/".preg_quote($k, '/')."/", $v, $html);
echo "<pre>".htmlspecialchars($html)."</pre>";
Я так понимаю, тут просто заменяются src, а как добавить тег <a href="ссылка-1"> ?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
21.05.2016, 14:06
Цитата Сообщение от sad67man Посмотреть сообщение
Я так понимаю, тут просто заменяются src, а как добавить тег <a href="ссылка-1"> ?
Да, я немного запутался. Ну например так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$html = <<<HTML
<img src="ссылка-1" />
<br>
<img src="ссылка-2" />
HTML;
 
$a = ["ссылка-1" => "ссылка-1-1", "ссылка-2" => "ссылка-2-2"];
 
$html = preg_replace_callback(
    "/<img src=\"(.+)\" \/>/",
    function ($m) use ($a)
    {
        return '<a href="'.$m[1].'" class="fancybox"><img src="'.$a[$m[1]].'"></a>';
    },
    $html
);
 
echo "<pre>".htmlspecialchars($html)."</pre>";
HTML5
1
2
3
<a href="ссылка-1" class="fancybox"><img src="ссылка-1-1"></a>
<br>
<a href="ссылка-2" class="fancybox"><img src="ссылка-2-2"></a>
Тут конечно отсутствует проверка на наличие ссылки в массиве, но это думаю и сами сможете, если нужно будет...
1
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,836
21.05.2016, 14:22  [ТС]
pav1uxa, Спасибо, попробую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2016, 14:22
Помогаю со студенческими работами здесь

Часть (область) картинки должна быть кнопкой (ссылкой) безразници
У меня есть большая картинка на весь экран во весь сайт. На картинке нарисован объект допустим прямоугольник. Мне нужно чтобы этот...

Как в браузере открыть вкладку со ссылкой, которая будет заменяться через некоторое время другой ссылкой?
Как в браузере tor открыть вкладку с ссылкой, которая будет заменяться другой ссылкой в этой же вкладке, секунд через 10-20 (не важно), а...

Обрамление
подскажите пожалуста каким способом можно сделать такое обрамление, просто в пример привел это изображение, необходима не сама рамка а...

Обрамление введенным символом
Доброе утро! Есть вопросик, как сделать что бы программа обрамляла экран введенным символом красного цвета?

Обрамление текста в тег
Можно ли как-то средствами javascript текст заключить в тег. Необходимо это для того, чтобы в последствии его выделить цветом. Сейчас, этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru