Maison > Questions et réponses > le corps du texte
P粉3230507802023-09-03 16:42:37
Il n'existe aucun moyen raisonnable de sauvegarder un document aussi corrompu que celui que vous avez publié, mais en supposant que vous mettiez >
和类似字符替换为其相关实体,例如: > ;
dans le texte, vous pouvez mettre le document que vous souhaitez accepter dans une bibliothèque appropriée telle que DomDocument qui se chargera de le repos.
$input = <<<_E_ < div class='test' >1 > 0 is < b >true</ b> and apples >>> bananas< / div > _E_; $input = preg_replace([ '#<\s+#', '#</\s+#' ], [ '<', '</' ], $input); $d = new DomDocument(); $d->loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); var_dump($d->saveHTML());
Sortie :
string(80) "<div class="test">1 > 0 is <b>true</b> and apples >>> bananas</div>"
P粉0644484492023-09-03 11:17:47
Cette regex fonctionne également :
Il divise la partie valide de la balise HTML en quatre parties et remplace les parties restantes (espaces) par celles-ci.
/(<)s*(/?)s*([^<>]*S)s*(>)/g
(<)
- Capture équerre d'ouverture (section 1) s*
- s'adapte à n'importe quel espace (/?)
- Capture des barres obliques inverses facultatives (Partie 2) s*
- correspond à n'importe quel espace après une barre oblique inverse ([^<>]*S)
- Capturez le contenu dans les balises sans espaces de fin (section 3) s*
- Correspond aux espaces après le contenu et avant le crochet droit(>)
- Capturer l'équerre droite (section 4) const reg = /(<)\s*(\/?)\s*([^<>]*\S)\s*(>)/g const str = "< div class='test' >1 > 0 is < b >true< / b > and apples >>> bananas< / div >" const newStr = str.replace(reg, ""); console.log(newStr);