Bonjour,
Voila j'essaye de parser du code html pour qu'il soit valide pour intant article de facebook
j'essaye entourer mes balise image avec des balise figure et si il y a une source je lui ajoute une balise enfant <figcaption><cite>xxx</figcation></cite>
voice mon code de test
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$html = <<<EOF
<p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
</p>
<p>
    <img src="xxxxx1" />
    <span class="sourceimgtest">x1</span>
</p>
<p>
    <img src="xxxxx2">
</p>
<p>
    <img src="xxxxx3">
</p>
<p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
</p>
<p>
    <img src="xxxxx4">
    <span class="sourceimgtest">x4</span>
</p>
<p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
</p>
<p>
    <img src="xxxxx5">
</p>
<p>
     <img src="xxxxx6">
     <img src="xxxxx7">
    <span class="sourceimgtest">x7</span>
     <img src="xxxxx8">
     <span class="sourceimgtest">x8</span>
</p>
EOF;
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$matches = $xpath->query('//p');
if($matches->length > 0 ){
    foreach($matches as $node){
        $node_img_match = $node->getElementsByTagName('img');
        if($node_img_match->length > 0){
            $i = 0;
            foreach( $node_img_match as $node_img){
                //echo $node_img_match->getAttribute('src').'<br />';
                $figure_node = $dom->createElement('figure');
                $figure_node->appendChild($node_img->cloneNode());
                if($node->getElementsByTagName('span')[$i+1]) {
                    $figCaption_node = $dom->createElement('figcaption');
                    $cite_node = $dom->createElement('cite',$node->getElementsByTagName('span')[$i]->nodeValue);
                    $figCaption_node->appendChild($cite_node);
                    $figure_node->appendChild($figCaption_node);
                }
                $node->replaceChild($figure_node,$node_img);
            $i++;
            }
        }
    }
}
$contenu = $dom->saveHTML();
echo $contenu;
Voici ce que je souhaite en sortie
<html>
<body>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure><img src="xxxxx1">
            <figcaption><cite>x1</cite>
            </figcaption>
        </figure><span class="sourceimgtest">x1</span>
    </p>
    <p>
        <figure><img src="xxxxx2">
        </figure>
    </p>
    <p>
        <figure><img src="xxxxx3">
        </figure>
    </p>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure><img src="xxxxx4">
            <figcaption><cite>x4</cite>
            </figcaption>
        </figure><span class="sourceimgtest">x4</span>
    </p>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure><img src="xxxxx5">
        </figure>
    </p>
    <p>
        <figure>
            <img src="xxxxx6">
        <figure>
        <figure>
            <img src="xxxxx7">
            <figcaption>
                <cite>x7</cite>
            </figcaption>
        <figure>
        <figure>
            <img src="xxxxx8">
            <figcaption>
                <cite>x8</cite>
            </figcaption>
        <figure>
    </p>
</body>
</html>
Les premieres balises sont bien entourées mais pas les dernieres et je comprends pas pouquoi
<html>
<body>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure>
            <img src="xxxxx1">
            <figcaption>
                <cite>x1</cite>
            </figcaption>
        </figure><span class="sourceimgtest">x1</span>
    </p>
    <p>
        <figure>
            <img src="xxxxx2">
        </figure>
    </p>
    <p>
        <figure>
            <img src="xxxxx3">
        </figure>
    </p>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure>
            <img src="xxxxx4">
            <figcaption>
                <cite>x4</cite>
            </figcaption>
        </figure>
        <span class="sourceimgtest">x4</span>
    </p>
    <p>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    </p>
    <p>
        <figure>
            <img src="xxxxx5">
        </figure>
    </p>
    <p>
        <figure>
            <img src="xxxxx6">
            <figcaption>
                <cite>x7</cite>
            </figcaption>
        </figure>
        <figure>
            <img src="xxxxx7">
            <figcaption>
                <cite>x8</cite>
            </figcaption>
        </figure>
        <span class="sourceimgtest">x7</span>
        <figure>
            <img src="xxxxx8">
        </figure>
        <span class="sourceimgtest">x8</span>
    </p>
</body>
</html>