2010-10-05 5 views
-1

J'utilise tinymce comme éditeur de texte sur mon site. Parfois, quand j'ai écrit du texte et que je l'ai enregistré, le code html est "cassé". Il semble qu'il y ait des balises html non fermées qui ont cassé la disposition css. C'est ce que l'on trouve comme solution http://www.php.net/manual/en/tidy.examples.phptinymce a cassé ma mise en page

Existe-t-il une autre technique (php) pour compléter automatiquement les balises non fermées?

Répondre

1

Tidy est la voie à suivre pour vous. Toute solution personnalisée, par ex. utiliser des expressions régulières serait pire que ce pour quoi elle a été conçue.

Mais le vrai problème, que TinyMCE crée des tags non fermés semble être un problème avec votre installation TinyMCE - êtes-vous sûr d'utiliser la version la plus récente (3.3.9.2)? Il ne doit pas générer de balises non fermées, uniquement si vous manipulez la source HTML manuellement.

0

Si vous ne pouvez pas utiliser Tidy, vous pouvez utiliser le DOM pour supprimer les balises non fermées et mal imbriquées. Ce qui suit encapsulera le balisage fixe dans les balises html et de conteneur de corps, mais vous pouvez facilement prendre soin de cela avec un rapide preg_replace ou str_replace.

error_reporting(0); 
header('Content-type: text/plain'); 

$html = '<p>Some <strong><em>badly</strong> formatted content</p>'; 

$xml = '<?xml version="1.0" encoding="utf-8" ?>' . $html; 

$dom = new DomDocument(); 
$valid = $dom->loadXML($xml); 

if (false === $valid) { 
    $doc = new DOMDocument(); 
    $doc->encoding = 'UTF-8'; 

    $doc->loadHTML($xml); 
    $html = simplexml_import_dom($doc)->asXML(); 
} 

echo $html;