在 PHP 中编写正则表达式以用 <a> 包装 <img> [重复]

Posted

技术标签:

【中文标题】在 PHP 中编写正则表达式以用 <a> 包装 <img> [重复]【英文标题】:Writing regular expression in PHP to wrap <img> with <a> [duplicate] 【发布时间】:2011-05-26 07:15:59 【问题描述】:

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

我如何在 php 中编写一个模式,以便我可以找到这些变化,这些变化分散在来自数据库的文本中:

<img src='/dir/dir2/image1.jpg' alt='blah blah blah'>
<img src="/dir/dir2/image2.jpg"  />
<img src="/dir/dir2/image3.jpg" />

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

【问题讨论】:

所以您将&lt;img src="A"/&gt; 转换为&lt;a href="A"&gt;&lt;img src="A"/&gt;&lt;/a&gt; 必填:***.com/questions/1732348/… :) (在你的情况下它可能是可以管理的,但 Cthulu 仍然适用。) 【参考方案1】:

preg_replace("&lt;img\\s*(.*?)src=('.*?'|\".*?\"|[^\\s]+)(.*?)\\s*/?&gt;ims", '&lt;a href=$2&gt;&lt;img $1src=$2 $3/&gt;&lt;/a&gt;', $str)

处理所有非实际案例

【讨论】:

谢谢SHINKiROU,你是我的英雄 啊啊啊啊!!!基于正则表达式的 html 解析! You dare violate the rules of bobince 被窃听,正则表达式方法必然如此。此正则表达式在 &lt;img data-license-src="foo.com/LICENSE" src="foo.com/img1.png"/&gt; 上失败,它将链接到 Liecense 而不是图像。说真的,使用一个可怕的 html 解析器,比如 DOMDocument。【参考方案2】:

我推荐使用 loadHTML() 而不是正则表达式的 PHP DOM?

http://php.net/dom

http://php.net/domdocument.loadhtml

【讨论】:

这些网站很好用。【参考方案3】:

我可以推荐使用 jQuery 并改用这个 sn-p,它应该更容易(我们都喜欢 jQuery 暴力破解任何问题;]

$('img').wrap( function() return '<a href="' + this.src + '"></a>'; );

还是

$('img').wrap( function() return '<a href="' + $(this).attr('src') + '"></a>'; );

不管怎样,玩得开心,使用 jQuery 来操作 DOM 客户端 ;)

【讨论】:

我赞成其他两个实际使用 PHP 来解决问题,但说真的,像这样的 DOM 元素包装在 jQuery 中非常简单,您需要很少的努力,并且允许您更多如果您突然决定……例如,标题图像……不需要选择,请密切关注要“更改”的区域。我并不是说我的方法一定是要走的路,只是指出笨拙的解决方案有一些好处。 相关:jQuery

以上是关于在 PHP 中编写正则表达式以用 <a> 包装 <img> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将文本列表转换为 html 的正则表达式

PHP正则表达式提取html超链接中的href地址

PHP 常用正则表达式

php 正则匹配HTML标签以外的匹配词 并且不匹配A标签中的匹配词

如何在Objective C(NSRegularExpression)中编写正则表达式?

正则表达式在PHP里的应用