Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2007, 09h53   #1
Membre confirmé
 
Avatar de dam_moreyllo
 
Développeur Web
Inscription : mai 2004
Messages : 251
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 251
Points : 225
Points : 225
Par défaut Supprimer retour à la ligne

Bonjour.
Je ne connais absolument rien aux expressions régulières (du chinois pour moi) et j'ai un problème avec l'une d'elles :
Code :
1
2
// strip normal newline within attr value
$attrSubSet[1] = preg_replace('/\s+/', '', $attrSubSet[1]);
Ce code ne vient pas de moi mais d'une classe que j'ai trouvé sur internet.
Le problème c'est que le commentaire dit qu'il veut supprimer les retours à la ligne si j'ai bien compris, hors ça supprime aussi les espaces, ce que je ne veux absolument pas !

Ma question est donc : comment faire pour que l'expression régulière supprime effectivement les retours à la ligne mais garde les espaces ?

Merci d'avance !
dam_moreyllo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 10h00   #2
Membre habitué
 
Inscription : décembre 2005
Messages : 137
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 137
Points : 105
Points : 105
Bonjour,
Essaye avec ça, je ne suis pas sur mais bon

Code :
$attrSubSet[1] = preg_replace('/\r+/', '', $attrSubSet[1]);
Bluespike62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 10h31   #3
Membre confirmé
 
Avatar de dam_moreyllo
 
Développeur Web
Inscription : mai 2004
Messages : 251
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 251
Points : 225
Points : 225
Merci ! C'est bon les espaces sont sains et saufs maintenant !
(j'ai un peu honte quand même, fallait juste changer un caractère...)
dam_moreyllo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 11h38   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
ça fonctionnera bien sur des données provenant d'un Mac (\r) mais ni de Windows (\r\n) ni de Linux (\n) :
Code :
$attrSubSet[1] = preg_replace('/[\r\n]+/', '', $attrSubSet[1]);
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 12h02   #5
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Pas exactement julp ^^

Code :
$attrSubSet[1] = preg_replace('/(?:\r|\n)+/', '', $attrSubSet[1]);
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 14h51   #6
Membre confirmé
 
Avatar de dam_moreyllo
 
Développeur Web
Inscription : mai 2004
Messages : 251
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2004
Messages : 251
Points : 225
Points : 225
Ok donc si j'ai bien compris pour la solution de Korko Fain, ça va supprimer soit \r, soit \n, soit les 2 ?
En tout cas merci pour cette précision !
dam_moreyllo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 15h10   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par Korko Fain
Pas exactement julp ^^

Code :
$attrSubSet[1] = preg_replace('/(?:\r|\n)+/', '', $attrSubSet[1]);
Je serais curieux de connaître la différence !

Citation:
Envoyé par ptitskippy
Ok donc si j'ai bien compris pour la solution de Korko Fain, ça va supprimer soit \r, soit \n, soit les 2 ?
En tout cas merci pour cette précision !
Tous les caractères \r et \n qu'il pourra trouver (consécutifs ou non, peu importe l'ordre). C'est peut être même plus rapide sans le quantificateur (+). La fonction str_replace ferait très bien l'affaire mais est un peu plus lourde en écriture : soit vous l'appelez consécutivement deux fois (une fois pour supprimer le caractère \r puis de nouveau pour \n - ou l'inverse) soit lui fournir un tableau composé de \r et \n comme deuxième paramètre.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 14h01   #8
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
n'importe quel caractère entre [] n'est plus métacaractère ^^
donc [\r] veux dire soit \ soit r ^^
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 14h16   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par Korko Fain
n'importe quel caractère entre [] n'est plus métacaractère ^^
donc [\r] veux dire soit \ soit r ^^
justement ce ne sont pas des métacaractères mais bien des caractères. Faites-en l'essai ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h10   #10
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Je n'ai rien sous la main pour tester (au boulot et protocol FTP impossible) mais bon si vous l'dites ^^ vous avez surement tester.
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 14h24   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je vous en ai concocté un :
Code :
1
2
3
4
5
6
7
8
9
10
<?php
$string = "L'oiseau est dans son nid.
Je répète l'oiseau est dans son nid.\nOk bien reçu !\rOn le serre !";
$string .= '\r\n';
 
header('Content-type: text/plain');
echo preg_replace('/[\r\n]+/', '', $string);
echo PHP_EOL . '-------------------------------' . PHP_EOL;
echo preg_replace('/(?:\r|\n)+/', '', $string);
?>
Donne :
Citation:
L'oiseau est dans son nid.Je répète l'oiseau est dans son nid.Ok bien reçu !On le serre !\r\n
-------------------------------
L'oiseau est dans son nid.Je répète l'oiseau est dans son nid.Ok bien reçu !On le serre !\r\n
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 14h28   #12
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Ok. Je m'incline
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web