Comment remplacer toutes XHTML/HTML sauts de ligne (<br>) avec de nouvelles lignes?
Je suis à la recherche pour le meilleur br2nl
fonction. Je voudrais remplacer toutes les instances de
et <br>
avec des sauts de ligne <br />
\n
. Un peu comme le nl2br() fonction, mais le contraire.
Je sais qu'il y a plusieurs solutions dans le manuel PHP commentaires, mais je suis à la recherche de commentaires de la communauté sur les solutions possibles.
- Êtes-vous sûr de vouloir remplacer le HTML/XHTML saut de ligne des éléments de la physique des sauts de ligne? Parce que
nl2br
ne remplace pas la ligne physique breakts mais ajoute juste le HTML/XHTML saut de ligne éléments. - Je ne suis pas en utilisant cette fonction pour annuler ou de récupérer une chaîne de caractères qui a été renvoyé de nl2br. Je l'utilise pour désinfecter texte dans une base de données existante (à partir d'une webapp qui a permis html) avant de l'importer dans ma base de données. Je viens de dire le contraire de nl2br parce que les gens savent en général que de la fonction.
Vous devez vous connecter pour publier un commentaire.
Je voudrais dire en général "de ne pas utiliser des regex pour travailler avec HTML", mais, sur ce point, je serais probablement aller avec une regex, considérant que
<br>
tags ressemblent généralement soit :<br>
<br/>
, avec un nombre quelconque d'espaces avant le/
Je suppose que quelque chose comme ceci ferait l'affaire :
Couple de notes :
<br
\s*
/
:/?
>
#i
), comme<BR>
serait valide en HTML<input type="text" value="<br />">
est autorisé en html (pas le xhtml). Et dans une section CDATA<br />
est "normal" du texte.Vous devriez être en utilisant
PHP_EOL
constante d'avoir indépendant de la plateforme des retours à la ligne.À mon avis, à l'aide de non-regexp fonctions chaque fois que possible, rend le code plus lisible.
Je suis conscient que cette solution a quelques défauts, mais je voulais partager mes impressions encore.
Si le document est bien formé (ou au moins bien formé-ish), vous pouvez utiliser le DOM extension et xpath pour rechercher et remplacer tous les br éléments par un \n nœud de texte.
imprime
edit: version plus courte avec une seule itération
foreach
.De la nl2br commentaires: