在PHP中编写正则表达式以使用<a>包装<img>

gio*_*gio 30 html php regex

我想做到这一点,以便任何图像的出现都包含一个图像源的链接

如何在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" />
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我希望它们出现在链接中.

Min*_*ang 24

preg_replace("{<img\\s*(.*?)src=('.*?'|\".*?\"|[^\\s]+)(.*?)\\s*/?>}ims", '<a href=$2><img $1src=$2 $3/></a>', $str)

处理所有非实际情况

替代文字

  • Aghghghghhhh!基于正则表达式的HTML解析! (4认同)
  • 【你敢违反bobince的规则】(/sf/answers/121271811/) (2认同)

Jon*_*nah 10

我建议使用PHP DOM loadHTML()代替正则表达式?

http://php.net/dom

http://php.net/domdocument.loadhtml


jco*_*and 7

我可以建议使用jQuery并使用这个代码段,它应该更容易(我们都喜欢jQuery来强制任何问题;])

$('img').wrap( function(){ return '<a href="' + this.src + '"></a>'; });
Run Code Online (Sandbox Code Playgroud)

或者是它

$('img').wrap( function(){ return '<a href="' + $(this).attr('src') + '"></a>'; });
Run Code Online (Sandbox Code Playgroud)

无论如何,有趣的时间,使用jQuery来操纵DOM客户端;)

  • 我正在推动其他两个用于实际使用PHP来解决问题,但严重的是,这样的DOM元素包装在jQuery中非常简单,只需要你很少的努力,并且可以让你更加专注于要改变的区域"如果你突然决定...例如,标题图片......不需要被选中.我并不是说我必须走的路,但只是指出尴尬的解决方案有一些好处. (3认同)