04/07/2013, 00:25:47
Bon,
j'ai appris un truc, c'est que le "foreach as $img" et modifier $img a l'interieur de la boucle, ca ne marche pas.
J'ai trouve une recette sur Stack Overflow que j'ai adapte a mon probleme. J'ai rajoute style / alt / class a la liste des tags lus et copiés dans le nouvel element CGSmartImage.
Voila voila.
j'ai appris un truc, c'est que le "foreach as $img" et modifier $img a l'interieur de la boucle, ca ne marche pas.
J'ai trouve une recette sur Stack Overflow que j'ai adapte a mon probleme. J'ai rajoute style / alt / class a la liste des tags lus et copiés dans le nouvel element CGSmartImage.
Code :
@$doc->loadHTML($content);
//following http://stackoverflow.com/questions/11067587/dom-replacechild-not-replacing-all-specified-elements
$imgElements = $doc->getElementsByTagName('img');
$imgCount = $imgElements->length;
for($i= $imgCount-1;$i>=0;--$i) {
$img=$imgElements->item($i);
if ($img->hasAttribute('src') AND substr($img->getAttribute('src'), 0, 7) == "uploads") {
$img_source = $img->getAttribute('src');
$img_width = $img->getAttribute('width');
$img_height = $img->getAttribute('height');
$img_title = $img->getAttribute('title');
$img_alt = $img->getAttribute('alt');
$img_style = $img->getAttribute('style');
$img_class = $img->getAttribute('class');
$smarty_data = "{CGSmartImage src=\"$img_source\" filter_resizetofit=\"$img_width,$img_height\" title=\"$img_title\" alt=\"$img_alt\" class=\"$img_class\" style=\"$img_style\"}";
@ob_start();
echo $smarty->display('eval:'.$smarty_data) ;
$_contents = @ob_get_contents();
@ob_end_clean();
$new = $doc->createTextNode($_contents);
$img->parentNode->replaceChild($new,$img);
}
}
Voila voila.