" doit être "",J'ai du code HTML qui contient des espaces dans les balises et je souhaite le rendre à nouveau valide - par exemple : 1>0istrueandapples>>>bananes< /div> doit être converti en HTML valide et, une fois rendu, devrait produire : 1>0is"> Expression régulière pour supprimer les espaces entre les balises HTML non valides - par exemple, "</b>" doit être "</b>"-Questions et réponses sur le réseau chinois PHP
Expression régulière pour supprimer les espaces entre les balises HTML non valides - par exemple, "" doit être ""
P粉884667022
P粉884667022 2023-09-02 19:56:28
0
2
441

J'ai du code HTML qui est gâché par des espaces dans les balises et je souhaite le rendre à nouveau valide - par exemple :

< div class='test' >1 > 0 est < b >true bananes&Lt / div >≪/pre> 

doit être converti en HTML valide et, une fois rendu, devrait produire :

1 > 0 est true >>> bananes

Tout texte précédé/suivi d'espaces dans > ou >< doit rester inchangé ; par exemple, ;1 > 0 doit être conservé au lieu d'être compressé en 1>0

Je réalise que cela peut nécessiter plusieurs expressions régulières, ce qui est très bien

J'ai quelques éléments :

Cela corrigera partiellement ;/b>

mais je travaille sur le reste<

Par exemple, je pourrais adopter une approche drastique, mais cela briserait également le code dans la partie texte de l'étiquette, et non le nom de l'étiquette lui-même

P粉884667022
P粉884667022

répondre à tous (2)
P粉323050780

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 queDomDocumentqui se chargera de le repos.

$input = <<<_E_ < div class='test' >1 > 0 is < b >true and apples >>> bananas< / div > _E_; $input = preg_replace([ '#<\s+#', '#loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); var_dump($d->saveHTML());

Sortie :

string(80) "
1 > 0 is true and apples >>> bananas
"
    P粉064448449

    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.

    Démo Regex101

    /(]*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);
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!