Réparer une chaîne HTML en PHP

En récupérant du contenu via un WYSIWYG en PHP, il y a des risques que des balises HTML mal formatées apparaissent. Pour éviter ce désagrément, PHP nous fournit une bibliothèque intitulée "Tidy". Cette dernière permet de nettoyer et manipuler des éléments HTML.

Pour l'utiliser, il faut, selon votre situation, soit simplement l'activer (si vous utilisez WampServer, par exemple), soit l'installer.

Voici un exemple simple d'utilisation :

<?php
  ob_start();
?>

<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>error</i>
  </body>
</html>

<?php
  $buffer = ob_get_clean();
  $tidy = tidy_repair_string($buffer);
  echo $tidy;
?>

Dans notre exemple, le code HTML est erroné. En effet, notre balise "<p>" n'est pas fermée et le mot "error" est entouré d'une balise fermante "i" jamais ouverte. La fonction "tidy_repair_string" va simplement nettoyer le code et nous renvoyer un HTML tout propre.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>error</p>
  </body>
</html>

La fonction susmentionnée a donc fermé la balise "p", supprimé la balise "i" et ajouté un "doctype".

Si vous souhaitez uniquement parser le "body" d'un HTML, il suffit d'appeler l'option "show-body-only" :

$str = “<p>error.”
tidy_repair_string($str, array('show-body-only' => true), "utf8");

echo $str;

Le code ci-dessus retournera le code HTML suivant :

<p>error.</p>

Pour plus d'informations :


4 février 2016 - Wakonda - PHP

Rechercher

Tags

Publicité

Suivez-nous

Aidez-nous !