2011-11-25 45 views
1

我有一个通讯,其中包含一个名为nieuwsbrief-tekst DIV内的几个图像。我想找到这些图像,并添加内联的CSS代码。我可以找到与preg_match DIV,我也可以找到图像标签本身,但将style=""添加到图像标签目前还没有工作。将样式属性添加到div中的图像与PHP

还有一个nieuwsbief-tekst div,这些div是不同的内容块,所以它们有3或4个。我试过preg_replace,但那没有效果。

任何提示或建议如何处理?

所以html看起来像这样,我只想添加样式属性到div内的图像。

HTM代码:

<div class="nieuwsbrief-tekst">lorum ipmsum</div> 
<div class="nieuwsbrief-tekst"><img src="#"></div> 
<div class="nieuwsbrief-tekst">lorum ipmsum</div> 
<div class="nieuwsbrief-tekst"><img src="#"></div> 

PHP代码:

if(preg_match_all('/<div class="nieuwsbrief-tekst">(.*?)<\/div>/is', $var, $matches)) { 

foreach($matches[0] as $match) { 

    if(preg_match('/<img[^>]+>/is', $match, $match_img)) { 

     echo 'image found'; 

     $pattern = '/<img[^>]+>/is'; 
     $replacement = '<img style="float:left; margin:0 10px 10px 0;'; 
     $test = preg_replace($pattern, $replacement, $match_img); 

    } 
} 

echo '<pre>'; 
print($test); 
echo '</pre>'; 

} 

谢谢:)

+0

它是'Lorem Ipsum',而不是'Lorem IpMsum':P – 2014-07-16 13:10:19

回答

0

这应该完成你想要

$pattern = "/<div class=\"tmp\">(\\w+)?<img ([^>]+)>(\\w+)?<\/div>/is"; 
$replacement = "<div class=\"tmp\">\\1 <img style=\"float:left; margin:0 10px 10px 0; \\2 /> \\3</div>"; 

$str = preg_replace($pattern, $replacement, $str); 
echo $str; 

只要改变TMP适合什么你的需求:)

+0

几乎完美:)如果图像和div位于同一行,但是如果图像从下一行开始则不起作用?我做了一些搜索和/ s应该照顾,但它不? 我无法控制用户在内容中添加图像的位置,因此无法强制图像始终直接在div的同一行上启动 – tijmen