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},那么它应该按照您的预期工作。试试看。试试看。