Supprimer le dernier retours à la ligne d'une chaine

Eléphant du PHP | 99 Messages

03 mars 2007, 20:57

Salut!

J'ai une chaine, qui est celle-ci:
$params="
(il y a une nouvelle ligne, mais elle ne s'affiche pas)
et qui doit être cherchée dans cette chaine:
function mkEditor($name,$form_url,$content,$params="newsurl,sondage,importImage,bold,italic,underline,image,justifyLeft,link,unlink,justifyCenter,justifyRight,textSize,textColor",$optional="") {
Forcément, ça ne marche pas (il n'y a pas de retour à la ligne dans la phrase, alors qu'il y en a un dans la phrase de recherche).
Mais je voudrais pouvoir supprimer uniquement le dernier retour à la ligne. Si y en a d'autres avant, il ne faudrait pas qu'ils soient enlevés...or je ne sais pas trop comment faire...

Et tant que j'y suis, quelle est la différence entre "\r\n", "\n" et \r"? Je crois avoir entendu dire que Windaube utilisait "\r\n", et linux "\n", mais je m'y perds un peu, là...

Eléphant du PHP | 259 Messages

03 mars 2007, 21:14

hello,

pour ta derniere question : tout à fait et le \r c'est les macintosh

sinon pour la premiere question, jette un oeil sur trim() et rtrim()

Eléphant du PHP | 99 Messages

03 mars 2007, 21:27

Et y auraient pas pu utiliser le même, non... :roll:
Ahlàlà...

Bref, comme il fallait que je ne supprime qu'un seul retour à la ligne (et que rtrim les supprimais tous), j'ai plutôt utilisé une fonction régulière. Enfin, trois fonctions régulières:

Code : Tout sélectionner

$avant = preg_replace("#(.*)\r\n$#","$1",$avant); $avant = preg_replace("#(.*)\r$#","$1",$avant); $avant = preg_replace("#(.*)\n$#","$1",$avant); $apres = preg_replace("#(.*)\r\n$#","$1",$apres); $apres = preg_replace("#(.*)\r$#","$1",$apres); $apres = preg_replace("#(.*)\n$#","$1",$apres);