Php : supprimer les retours chariots.

WRInaute impliqué
Bonjour,

j'ai un texte ($texte) qui s'affiche comme suit :

Connaissez-vous bien les commandes spéciales des moteurs de
recherche, qui permettent d'effectuer des requêtes précises, parfois
très utiles pour travailler le référencement naturel ?

WebRankInfo vous propose la plus grande base de données d'explications sur ces commandes et opérateurs spéciaux

j'aimerai virer les retours à la ligne intempestifs, et garder les retours de paragraphes. Une fonction native dans php ?


Cordialement
 
WRInaute accro
Peut etre :

1 - un str replace des double retours chariots par une balise style [mabalise]
2 - un str replace des retour chariots restants par ""
3 - un str replace des [mabalise] par des doubles retour chariot

C'ets pas natif mais bon ca fait trois lignes de code.
 
WRInaute impliqué
Ou même une seule ligne :
Code:
str_replace(array("\n\n", "\n", "[masuperbalise]"), array('[masuperbalise]', ' ', "\n\n"), $texte);

Mais je pense qu'il doit exister un moyen "plus propre", avec un regexp par exemple, ou encore plus simple, à trouver ;)
 
WRInaute impliqué
merci à tous les deux,

sinon, je n'ai aucune balise dans le code source de $texte, je m'etonne qu'il n'existe pas une fonction pour virer ces retours qui ne sont ni même pas des br. L'encodage tout un programme.

Florent
 
WRInaute accro
la balise c'ets toi qui la met a la place des double pour les retrouver ensuite ... tu mets un truc unique qui a peu de chance de se retriouver dans le texte .. style

[[Yoplaboummabaliseamoi]]
 
WRInaute accro
la balise c'ets toi qui la met a la place des double pour les retrouver ensuite ... tu mets un truc unique qui a peu de chance de se retriouver dans le texte .. style

[[Yoplaboummabaliseamoi]]
 
WRInaute accro
Lentreprenaute a dit:
merci à tous les deux,

sinon, je n'ai aucune balise dans le code source de $texte, je m'etonne qu'il n'existe pas une fonction pour virer ces retours qui ne sont ni même pas des br. L'encodage tout un programme.

Florent
Si si, \n et ou \r
Ensuite un replace et on n'en parle plus.
 
WRInaute passionné
Blount a dit:
Ou même une seule ligne :
Code:
str_replace(array("\n\n", "\n", "[masuperbalise]"), array('[masuperbalise]', ' ', "\n\n"), $texte);

Mais je pense qu'il doit exister un moyen "plus propre", avec un regexp par exemple, ou encore plus simple, à trouver ;)
elle est trés bien et propre ta solution, un simple str_replace suffit et plus leger qu'une expression reguliere.

Aprés faut faire gaffe, car en general c'est des \r\n qu'on trouve, donc on ne risque pas de trouver des \n\n mais des \r\n\r\n. (compatibilité differents os)
 
WRInaute accro
Blount a dit:
Ou même une seule ligne :
Code:
str_replace(array("\n\n", "\n", "[masuperbalise]"), array('[masuperbalise]', ' ', "\n\n"), $texte);

Mais je pense qu'il doit exister un moyen "plus propre", avec un regexp par exemple, ou encore plus simple, à trouver ;)
J'aime bien decomposer : c'est plus lisible et on voit mieux ce qu'ont fait (en plus ca facilite les echo intermediaires de debug eventuels).
 
WRInaute impliqué
Code:
echo $text = preg_replace("/(\r\n|\n|\r)/", " ", $text);
Zecat, Milkiway*
Quid, de la signification de "n" et "r", dans la manière du code ci-dessus, y-at-'il moyen de distinguer un retour intempestif d''un retour de paragraphe ? Parce dans mon exemple, ca file droit :D

* voila la contrib de deux pseudos, qui ne me rajeunisse pas :D
 
WRInaute passionné
Lentreprenaute > il veut quand meme garder les saut de ligne pour les paragraphe (2 sauts de lignes) donc c'est pas bon ton systeme.
 
WRInaute accro
Lentreprenaute a dit:
Code:
echo $text = preg_replace("/(\r\n|\n|\r)/", " ", $text);
Zecat, Milkiway*
Quid, de la signification de "n" et "r", dans la manière du code ci-dessus, y-at-'il moyen de distinguer un retour intempestif d''un retour de paragraphe ? Parce dans mon exemple, ca file droit :D

* voila la contrib de deux pseudos, qui ne me rajeunisse pas :D
Hé bien un retour intenpesif, c'est deux à la suite non ?
Donc nl2br
et ensuite, supprimer tout '<br /><br />'
;)
 
WRInaute passionné
$search=array("\r\n","\n\n", "\n", "[br_paragraphe]");

$replace=array("\n", '[br_paragraphe]', ' ', "\r\n\r\n");

$text=str_replace($search,$replace, $text);

Voilà, ca devrait marcher là .
 
WRInaute impliqué
Bonsoir gentilshommes,

Je vous invite à prendre mon exemple initial et à proposer un "ready to use script ". Je récompense de ma e-gratitude*, celui qui nous fait le plus beau poeme en en pi hache pi.

Je ne pense pas à moi, en vous disant ceci, non je ne veux pas faire mon supermarché, je pense à cet internaute lambda, cet inconnu qui un jour cherchera cette solution et sera servi comme un prince. :p Ca changera de ces forums (pas wri cqfd) qui trustent Google avec des questions sans réponses.

Merci a tous, je ne vous dis pas l'option que je retiens pour ne froisser personne :D

Cordialement,
Florent

*soit du vent.
 
Discussions similaires
Haut