2010-12-09 4 views
0

En PHP, je veux chercher div et les images à venir à l'intérieur div besoin d'ajouter divs d'emballage, commeEn PHP comment rechercher div et ajouter divs conteneur wrapper

<div id="div1"><img src="test1.jpg" /></div><div id="div2"><img src="test1.jpg" /><img src="test2.jpg" /></div> 

Quelles que soient les images viennent à l'intérieur <div id="div2"> je dois reformater, comme

<div id="div2"><div id="imageContainer"><img src="test1.jpg" /></div><div id="imageContainer"><img src="test2.jpg" /></div></div> 

Merci, codeur

+0

Voulez-vous dire que vous voulez faire cela en utilisant un éditeur php quelconque? –

+0

Un attribut ID utilisé en HTML devrait identifier de façon unique l'élément. – wimvds

+0

Je crée des modèles dans wordpress dans certains domaines de conception est compliquée et beaucoup de divs viennent donc sans confus client, en utilisant le code que j'ai besoin d'ajouter quelques divs – coder

Répondre

0

meilleure pratique consiste à utiliser un parseur XML, comme

DOM

comme cela, vous pouvez obtenir une valeur:

function getXpathValues(&$dom, $expr) { 
$xpth = $dom->xpath_new_context(); 
    $xnode = xpath_eval($xpth,$expr); 
    if (isset ($xnode->nodeset[0])) { 
     $firstnode = $xnode->nodeset[0]; 
     $children = $firstnode->children(); 
     $value = $children[0]->content; 
    return $value; 
} 
     else return Null; 
} 

Utilisation:

$dom = domxml_open_file('pear.rss'); 
echo $this->getXpathValues($dom, "//channel/title"); 

pris forme ici: php manual

pour insérer vraiment de nouveaux éléments vont pour cette : xsl: for more complexity ou boucle les éléments, ajouter l'enfant à un nouveau (div imageContainer), enlever les Childs, et ajouter le nouvel élément

ou vraiment le plus simple - suffit de faire une chaîne .. remplacer

+0

merci remy pouvez-vous donner un exemple, je n'ai pas beaucoup d'expérience en PHP – coder

+0

Je ne vois pas pourquoi vous utiliseriez un analyseur XML. Il y a un moyen beaucoup plus simple de le faire. – Christophe

+0

peut-être un coup d'oeil trop rapide .. juste le bon chemin (overheaded);) –

0

Le le plus simple est d'utiliser preg_replace();

Vous recherchez la balise img puis vous placez un div autour

<?php preg_replace("/\[(img .*?)\]/","<div class='div2'><$1></div>", $content); ?> 

Mais vous dites que vous créez un modèle wordpress .. est le code, vous avez publié ci-dessus, soumis par un formulaire ou les fichiers de thème?

Questions connexes