Ответ 1
preg_replace("{<img\\s*(.*?)src=('.*?'|\".*?\"|[^\\s]+)(.*?)\\s*/?>}ims", '<a href=$2><img $1src=$2 $3/></a>', $str)
обрабатывает все не практические случаи
Я хочу сделать так, чтобы всякое появление изображения обернулось ссылкой на источник изображения
Как я могу написать шаблон в PHP, чтобы я мог найти эти варианты, которые разбросаны по всему тексту, поступающему из базы данных:
<img src='/dir/dir2/image1.jpg' alt='blah blah blah'>
<img src="/dir/dir2/image2.jpg" alt="blah blah blah" />
<img src="/dir/dir2/image3.jpg" />
Во всех случаях я хочу, чтобы они отображались в пределах ссылки.
preg_replace("{<img\\s*(.*?)src=('.*?'|\".*?\"|[^\\s]+)(.*?)\\s*/?>}ims", '<a href=$2><img $1src=$2 $3/></a>', $str)
обрабатывает все не практические случаи
Мое я рекомендую PHP DOM с loadHTML()
вместо регулярного выражения?
Могу ли я рекомендовать использовать jQuery и использовать этот фрагмент вместо этого, это должно быть проще (и мы все любим jQuery для перебора любой проблемы ;]
)
$('img').wrap( function(){ return '<a href="' + this.src + '"></a>'; });
или это
$('img').wrap( function(){ return '<a href="' + $(this).attr('src') + '"></a>'; });
В любом случае, веселое время для использования, используя jQuery для управления клиентами DOM;)