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 07/03/2011, 20h23   #1
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
Par défaut preg_replace > tout sauf $chaine ?

Bonjour !

Aucun soucis au niveau de l'utilisation "basique" du preg_replace, seulement là ou je bloque, c'est :

-Comment nettoyer une chaine en gardant QUE ce que je précise dans une autre chaîne ?

-Je sais vérifier si il n'y a que tel ou tel caractères :
Code :
1
2
// exemple :
!preg_match("`^[1234567890]{1,10}$`", $chaine)

Mais je ne sais pas remplacer tout autre caractère que ceux listés dans une chaine.


Exemple de ce que j'aimerais pouvoir faire:

Code :
1
2
3
4
5
6
7
8
$ce_que_je_veux_garder ='abcdefghijklmnopqrstuvwxyz1234567890 ';
 
$la_chaine_a_traiter = 'salut ca va ? ++ mon num = 0606060606';
 
//application du preg
 
//résultat : "salut ca va mon num 0606060606"
//tous les caractères n'étant pas contenus dans "$ce_que_je_veux_garder" ont été enlevé.



Voilà si vous pouvez m'éclairer cela serait sympa !
noyuw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 22h09   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Avec la classe de caractères
[abcdefghijklmnopqrstuvwxyz1234567890 ]
pouvant s'écrire ainsi
[a-z0-9 ]
a-z represente les lettres (de a à z inclus).
0-9 represente les chiffres (de 0 à 9 inclus).
La recherche est fructueuse (le remplacement a lieu) pour les lettres et les chiffres.

Pour l'effet inverse, il suffit que le premier caractère de la classe soit un accent circonflexe ^, qui représente une négation.

Nous obtenons ainsi
[^abcdefghijklmnopqrstuvwxyz1234567890 ]
ou plus simplement
[^a-z0-9 ]
Code :
1
2
3
4
<?php
$a_garder ='a-z0-9 ';
$chaine   = preg_replace('/[^'.$a_garder.']/', '', $chaine);
?>
Voir les classes de caractères.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/03/2011, 01h59   #3
Invité de passage
 
Inscription : juin 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 19
Points : 2
Points : 2
Merci !

c'est exactement ce que je voulais !

noyuw 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 16h12.


 
 
 
 
Partenaires

Hébergement Web