[PHP][OK] Supprimer 'retour à la ligne' via regexp - Ou comment planter mon hébergeur web

Bonjour,

Bon voilà, je cherche désespérement un moyen de supprimer des retours à la ligne qqconque ( \r\n ou \n ou \r ) d’une chaîne de caractères, pour pouvoir la traîter avec l’application d’une expression régulière.

Pour le moment, j’ai fait:

preg_replace( '`(\\r\\n|\\n|\\r)`', '<br/>', $texte );

Mais il semblerait que ca fasse planter 1) mon serveur local 2) mon hébergeur.
J’ai donc voulu passer un 4ième paramètre pour limiter les ressources, mais idm, ca plante (Erreur 500 : Internal Server Error).

Quelqu’un aurait une idée de comment réaliser la chose ?

nl2br ?

http://ch.php.net/nl2br

nan, ca marche pas. Ca mets des <br/>, mais ca garde aussi les retours à la ligne. Ca se voit au niveau du code source.

Pour faire cours, j’ai un texte long, dans le lequel il y a 2 balises [desc]et [/desc]. Et je voudrais récupérer le contenu qu’il y a entre ces 2 balises. Seulement, cela ne marche pas avec l’application d’une expression régulière quand il y a des retours à la ligne dans le texte (je parle des \n ou \r\n ou \r et non des <br/>).

si tu veux faire ça, essaye ça plutôt :

preg_replace(’/\\r\\n|\\r|\\n/’, ‘<br />’, $truc);

Ton problème se situe sur ` : je sais pas ce que ça donne comme délimiteur

Sinon peux-t’on savoir la longueur de ton texte?

Beh … ca a marché durant 10min pendant mes tests sur l’hébergeur … et puis boum Erreur 500 : Internal Server Error.

Et sinon, durant ces tests, j’ai vu que les retours à la ligne étaient supprimés, mais pas remplacé par le <br/>. Je comprend rien …

EDIT : Ca semble être bon … J’ai utilisé les option s et U dans le pattern en faisant /pattern/sU .

marrant, tu n’utilises pas le point (.) donc s inutile, et pas de */? donc U inutile. Tu devrais faire un bête str_replace :

str_replace(array("\r\n", “\n”, “\r”), ‘<br />’, $texte);

bien moins coûteux je pense.

Ah oui, j’ai pas précisé c’est vrai :ane:

J’ai mis ces options dans le pattern direct de mon expression régulière (je devais recherché un texte entre 2 balises, dans un textes qui peut être entrecoupé par des retours à la ligne). Comme je ne savais pas que ces options existaient, je pensais remplacer d’abord les retours à la ligne, puis après rechercher le texte. Mais au final, et bien je fais les 2, en une seule fois.

Toujours est-il que c’est bizarre que j’ai eu des erreurs du serveur, lors de mes tentatives avec ma première méthode !

Ceci explique cela.