我需要一些帮助,让这在PHP中工作。
我在wordpress的不同“页面”中有很多信息和图片。现在我真的想不出该如何解决这个问题了。
我有很多这样的图像直接在“页面文本”
<img src="..." />我需要把它替换掉这样它就变成了
<a href="content of img src" data-lightbox="image-1"><img src="..." /></a>提前感谢,即使你不能解决这个问题,也许你可以给我指明正确的方向。一个“页面”最多可以有4-5张图片。
发布于 2013-11-06 06:33:36
您可以使用PHP DOMDocument来实现这一点。使用正则表达式也可以,但使用此方法会获得更好的成功。
$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);
}发布于 2013-11-06 22:06:30
所以,正如我在你的评论中所说的,你可以做一些事情来解决这个问题。我将向您展示如何使用正则表达式,显然您必须对其进行改进以适应您的问题。为了使用正则表达式,你必须确定你想要替换的模式,因为如果任何一个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标记遵循相同的模式,这使得创建R.E.
parentesis "/(<img src=')([^']*)('\/>)/" groups (用于替换后一组)第一个模式标识<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 = '/>这些组被命名为preg_replace命令的$n,如文档所述:preg_replace
因此我将其替换为"<a href='$2'>$1$2$3</a>",这是不言而喻的。
为了学习和测试您的正则表达式,请使用这个Site,我喜欢它,因为您可以粘贴文本和创建模式,并随时查看发生了什么。如果您的模式匹配,它将以蓝色背景显示实例。
所以,如果它对你有帮助,请告诉我。很抱歉这么晚才回复。
https://stackoverflow.com/questions/19797587
复制相似问题