Php 将img src转换为a href
我需要一些帮助,使这在PHP的工作 我在wordpress的不同“页面”中有很多信息和图片。现在我真的不知道该如何解决这个问题 我在“页面文本”中有很多这样的图片Php 将img src转换为a href,php,regex,image,lightbox,Php,Regex,Image,Lightbox,我需要一些帮助,使这在PHP的工作 我在wordpress的不同“页面”中有很多信息和图片。现在我真的不知道该如何解决这个问题 我在“页面文本”中有很多这样的图片 我需要替换它,使它成为 <a href="content of img src" data-lightbox="image-1"><img src="..." /></a> 我想有办法用一些我几乎一无所知的regexp来解决这个问题 提前谢谢,即使你不能解决这个问题,你也许可以给我指出正确
我需要替换它,使它成为
<a href="content of img src" data-lightbox="image-1"><img src="..." /></a>
我想有办法用一些我几乎一无所知的regexp来解决这个问题
提前谢谢,即使你不能解决这个问题,你也许可以给我指出正确的方向。一个“页面”中最多可以有4-5个图像。您可以使用PHP文档来实现此目的。使用正则表达式也可以工作,但使用此方法将获得更好的成功
$dom = new DOMDocument();
$dom->loadHTML($html); // $html is your "page text"
//Create new wrapper
$new_anchor = $dom->createElement('a');
$new_anchor->setAttribute('data-lightbox','image-1');
//Find all images
$images = $dom->getElementsByTagName('img');
//Iterate though images
foreach ($images AS $image) {
//Clone our created anchor
$new_anchor_clone = $new_anchor->cloneNode();
//Add on the src
$new_anchor_clone->setAttribute('href',$image->getAttribute('src'));
//Replace image with this anchor
$image->parentNode->replaceChild($new_anchor_clone,$image);
//Append this image to wrapper anchor
$new_anchor_clone->appendChild($image);
}
正如我在你的评论中所说的,你可以做一些事情来解决这个问题。我将向您展示如何使用正则表达式,很显然,您必须改进它以适应您的问题。为了使用正则表达式,您必须确定要替换的模式,因为如果
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;
在img标记中,如下所示:
:
group 1 = <img src='
group 2 = myImg3.jpg
group 3 = '/>
第1组=
对于文档中所述的preg\u replace
命令,这些组被命名为$n
:
因此,我将替换为“”,这是不言自明的
为了学习和测试正则表达式,我喜欢使用它,因为你可以粘贴文本,创建模式,看看动态中会发生什么。如果您的模式匹配,它将显示蓝色背景的引用
所以,如果对你有帮助,请告诉我。很抱歉,回复太晚。因此图像包含_content()的内部内容;您可以插入一个javascript来轻松地完成这项工作。合适吗?但我需要知道这是什么:
img src的内容
应该成为我的内容();从一开始就包含。我想在前面添加一个data-lightbox1和href,使其与img src相同。嘿,非常感谢你这么做。我离开了几天,我会看看这个。非常感谢您的帮助!:)@user2957788很高兴为您提供帮助,希望它能帮助您:)
(<img src=') group 1
([^']*) group 2
('\/>) group 3
group 1 = <img src='
group 2 = myImg3.jpg
group 3 = '/>