[RESOLU] [DOMNode::removeChild] Supprimer paragraphes

Petit nouveau ! | 8 Messages

05 janv. 2020, 01:05

Bonjour,

Je souhaite supprimer les paragraphes. Le but ultime est plutôt de les remplacer. Quand j'aurai trouvé le moyen de les supprimer, je suppose que je pourrai les remplacer. :)

Voici mon code, qui ne fonctionne pas...
$texte = <<<EOT
<p>Les dispositions de <a href="#LEGIARTI000006419332" title="Suivre le lien">l'article 17-8</a> s'appliquent, à titre interprétatif, aux changements de nationalité consécutifs aux annexions et cessions de territoires résultant de traités antérieurs au 19 octobre 1945.</p><p>Toutefois, les personnes étrangères qui étaient domiciliées dans les territoires rétrocédés par la France, conformément au traité de Paris du 30 mai 1814 et qui, à la suite de ce traité, ont transféré en France leur domicile, n'ont pu acquérir, de ce chef, la nationalité française que si elles se sont conformées aux dispositions de la loi du 14 octobre 1814. Les Français qui étaient nés hors des territoires rétrocédés et qui ont conservé leur domicile sur ces territoires n'ont pas perdu la nationalité française, par application du traité susvisé.</p>
EOT;

$html = new DOMDocument();

libxml_use_internal_errors(true);

$html->loadHTML(mb_convert_encoding($texte, 'HTML-ENTITIES', 'UTF-8'));

libxml_clear_errors();

$xpath = new DOMXPath($html);

$elementsParagraphes = $xpath->query('//p');

foreach ($elementsParagraphes as $elementParagraphe) {
	
	$elementParagraphe->parentNode->removeChild($elementParagraphe);
	
}

echo $texte;
Le texte s'affiche... désespérément.

Merci pour votre aide.

T.

Eléphant du PHP | 63 Messages

05 janv. 2020, 03:16

Bonsoir. Rien à redire pour la destruction, elle est correcte. Par contre
echo $texte; // affichera toujours le texte original alors que
echo $html->saveHTML(); // devrait afficher selon le HTML modifié par le code.

Petit nouveau ! | 8 Messages

05 janv. 2020, 11:36

@tesmet Merci. :D J'avais cherché pendant des heures. :cry: