因此,正如我在您的评论中所说,您可以采取一些措施来解决这个问题。我将展示如何使用正则表达式,显然你必须改进它以适应你的问题。为了使用正则表达式,您必须确定要替换的模式,因为如果任何一个img
标签与您的模式不匹配,这些标签将不会被替换。所以我做了这个小例子:
$content = "
<html>
<body>
<img src='myImg.jpg'/><br/>
<img src='myImg2.jpg'/><br/>
<img src='myImg3.jpg'/><br/>
<img src='myImg4.jpg'/><br/>
<img src='myImg5.jpg'/><br/>
<img src='myImg6.jpg'/><br/>
</body>
</html>
";
$newContent = preg_replace( "/(<img src=')([^']*)('\/>)/", "<a href='$2'>$1$2$3</a>", $content);
echo $newContent;
正如您在我$content
的变量中看到的,img
标签遵循相同的模式,这使得创建 RE 变得更容易
"/(<img src=')([^']*)('\/>)/"
parentesis 标识组(用于替换后者)第一个模式标识<img src='
,第二部分([^']*)
我说的是:不是单引号,第三部分我从结束引号开始('\/>)
到结束标记 img。
每个 parentesis 表示一个内部接收从左到右计数的数字的组,因此:
(<img src=') group 1
([^']*) group 2
('\/>) group 3
在这样的 img 标签中:<img src='myImg3.jpg'/>
它将是:
group 1 = <img src='
group 2 = myImg3.jpg
group 3 = '/>
这些组被命名为$n
命令preg_replace
,如文档所述:preg_replace
所以我然后替换"<a href='$2'>$1$2$3</a>"
它是不言自明的。
为了学习和测试你的正则表达式,我喜欢这个网站,因为你可以粘贴你的文本并创建你的模式,看看会发生什么。如果您的模式匹配,它将以蓝色背景显示匹配项。
所以,让我知道它是否对你有帮助。很抱歉回复晚了。