PHP-使用preg_replace包装多个实例
我有这样一个字符串:PHP-使用preg_replace包装多个实例,php,preg-replace,Php,Preg Replace,我有这样一个字符串: '<img src="image1.jpg"><img src="image2.jpg"><img src="image3.jpg"> <img src="image4.jpg"><img src="image5.jpg">' ' ' 我想谈谈: '<div class="slide"><img src="image1.jpg"><img src="image2.jpg">&
'<img src="image1.jpg"><img src="image2.jpg"><img src="image3.jpg">
<img src="image4.jpg"><img src="image5.jpg">'
'
'
我想谈谈:
'<div class="slide"><img src="image1.jpg"><img src="image2.jpg"></div>
<div class="slide"><img src="image2.jpg"><img src="image3.jpg"></div>
<div class="slide"><img src="image3.jpg"></div>'
'
'
因此,基本上我想应用preg_替换,将每2个元素包装在一个DIV中。
我搜索了论坛,找到了一些我尝试过的技巧:
$pattern = '/(<img[^>]*class=\"([^>]*?)\"[^>]*>)+/i';
$replacement = '<div class="slide">$1</div>';
$content = preg_replace($pattern, $replacement, $content);
$pattern='/(]*class=\”([^>]*?)\“[^>]*>)+/i';
$replacement='$1';
$content=preg_replace($pattern,$replacement,$content);
及
$pattern='/(]*class=\”([^>]*?)\“[^>]*>){2,}/i';
$replacement='$1';
$content=preg_replace($pattern,$replacement,$content);
但它不起作用
有什么想法吗,伙计们
谢谢大家! 使用DomDocumen对象执行此操作:
$str = '<img src="image1.jpg"><img src="image2.jpg"><img src="image3.jpg">
<img src="image4.jpg"><img src="image5.jpg">';
$dom = new DomDocument;
$dom->loadHTML($str);
$imgs = $dom->getElementsByTagName('img');
$i = $imgs->length;
$cur = 0;
$res = new DomDocument;
while ($i >= 2) {
$div = $res->createElement('div');
$div->setAttribute("class","slide");
$res->appendChild($div);
$div->appendChild($res->importNode($imgs->item($cur++)));
$div->appendChild($res->importNode($imgs->item($cur++)));
$i -= 2;
}
if($i) $res->appendChild($res->importNode($imgs->item($cur++)));
echo $res->saveHTML();
// <div class="slide"><img src="image1.jpg"><img src="image2.jpg"></div><div class="slide"><img src="image3.jpg"><img src="image4.jpg"></div><img src="image5.jpg">
$str='1〕
';
$dom=新的DomDocument;
$dom->loadHTML($str);
$imgs=$dom->getElementsByTagName('img');
$i=$imgs->长度;
$cur=0;
$res=新文档;
而($i>=2){
$div=$res->createElement('div');
$div->setAttribute(“类”、“幻灯片”);
$res->appendChild($div);
$div->appendChild($res->importNode($imgs->item($cur++));
$div->appendChild($res->importNode($imgs->item($cur++));
$i-=2;
}
如果($i)$res->appendChild($res->importNode($imgs->item($cur++));
echo$res->saveHTML();
//
使用DomDocumen对象执行此操作:
$str = '<img src="image1.jpg"><img src="image2.jpg"><img src="image3.jpg">
<img src="image4.jpg"><img src="image5.jpg">';
$dom = new DomDocument;
$dom->loadHTML($str);
$imgs = $dom->getElementsByTagName('img');
$i = $imgs->length;
$cur = 0;
$res = new DomDocument;
while ($i >= 2) {
$div = $res->createElement('div');
$div->setAttribute("class","slide");
$res->appendChild($div);
$div->appendChild($res->importNode($imgs->item($cur++)));
$div->appendChild($res->importNode($imgs->item($cur++)));
$i -= 2;
}
if($i) $res->appendChild($res->importNode($imgs->item($cur++)));
echo $res->saveHTML();
// <div class="slide"><img src="image1.jpg"><img src="image2.jpg"></div><div class="slide"><img src="image3.jpg"><img src="image4.jpg"></div><img src="image5.jpg">
$str='1〕
';
$dom=新的DomDocument;
$dom->loadHTML($str);
$imgs=$dom->getElementsByTagName('img');
$i=$imgs->长度;
$cur=0;
$res=新文档;
而($i>=2){
$div=$res->createElement('div');
$div->setAttribute(“类”、“幻灯片”);
$res->appendChild($div);
$div->appendChild($res->importNode($imgs->item($cur++));
$div->appendChild($res->importNode($imgs->item($cur++));
$i-=2;
}
如果($i)$res->appendChild($res->importNode($imgs->item($cur++));
echo$res->saveHTML();
//
下面是一个工作示例:
<?php
$content = '<img src="image1.jpg"><img src="image2.jpg">
<img src="image3.jpg"><img src="image4.jpg">
<img src="image5.jpg">';
$pattern = '/((<img[^>]*src=\"([^>]*?)\"[^>]*>\s*){2,2})/i';
$replacement = '<div class="slide">$1</div>';
$content = preg_replace($pattern, $replacement, $content);
echo $content;
以下是工作示例:
<?php
$content = '<img src="image1.jpg"><img src="image2.jpg">
<img src="image3.jpg"><img src="image4.jpg">
<img src="image5.jpg">';
$pattern = '/((<img[^>]*src=\"([^>]*?)\"[^>]*>\s*){2,2})/i';
$replacement = '<div class="slide">$1</div>';
$content = preg_replace($pattern, $replacement, $content);
echo $content;
非常感谢,它很有效!但是,由于它只在每两个项目中工作一次,第五张图片没有用div包装。我更希望它是:
,所以我想知道preg_replace是否是一个好的解决方案……如果您将{2,2}更改为{1,2},那么它应该按照您的预期工作。非常感谢,它工作正常!但是,由于它只在每两个项目中工作一次,所以第五张图片没有用div包装。我更希望它是:
,所以我想知道preg_replace是否是一个好的解决方案……如果您将{2,2}更改为{1,2},那么它应该按照您的预期工作。试试看。试试看。