Bonjour à tous,
J'ai une petite fonction anti-bareLF pour l'envoi d'emails en PHP. Elle est simplissime... peut-être trop !
Le but est de remplacer les \n seuls par des \r\n, je veux donc remplacer touts les occurrences de \n non précédées de \r.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function AntiBareLF($txt) { return preg_replace("|[^\r](\n)|", "\r\n", trim($txt)); }
Au lancement j'ai ça :
Il y a 2 problèmes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $chaine = "On va s'aimer\r\nOn va s'aimer\nOn va s'aimer\n"; echo AntiBareLF($chaine); #Résultat : On va s'aimer On va s'aime On va s'aimer
- celui du milieu a le r qui a sauté
- celui en bout de chaine n'est pas modifié.
Pour mieux visualiser, j'ai une petite fonction qui remplace les \r par R et \n par \N et le résultat est
On voit bien que le r de la deuxième ligne a sauté et que la dernière ligne n'a plus le \n du tout, sans être remplacé.On va s'aimerRNOn va s'aimeRNOn va s'aimer
Si vous pouvez m'éclairer sur ce résultat bizarre, merci d'avance
Partager