Comment ne garder que certains caractères d'une chaine ?

Signaler
Messages postés
8
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
6 décembre 2007
-
Messages postés
8
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
6 décembre 2007
-
Bonjour,

J'utilise la fonction str_replace pour remplacer certains caractère contenu dans une chaine par d'autres.

J'aimerais faire le contraire.  C'est à dire remplacer tous les caractères sauf ceux que je spécifierais mais je ne sais pas s'il existe une fonction php qui fait ca.

Merci d'avance pour votre aide

4 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Tu peux utiliser une expression régulière, avec preg_replace() :
http://www.php.net/manual/fr/function.preg-replace.php

Par exemple, tu veux ne garder que les voyelles d'un texte :
$nouveau_texte = preg_replace('`([^aeiouy])`i', '', $ancien_texte);

Explications :
- les guillemets inversés ` servent de délimiteur à l'expression régulière
- les parenthèses servent à capturer la chaine
- les crochets servent à spécifier une classe de caractères.
- l'accent circonflexe ^ sert à spécifier qu'on cherche l'inverse de ce qui est spécifié dans la classe de caractères.
- le i est une option de recherche qui indique que la recherche n'est pas sensible à la casse.

Effet : cette expression régulière va capturer tous les caractères qui ne sont pas aeiouy, majuscule ou minuscule. Tous les caractères qui ne correspondent pas à ce qui est spécifié dans la classe de caractères sont remplacés par '' (chaine vide).
Libre à toi de les remplacer par autre chose.
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
3
salut,
c'est un peu bizarre ce que tu veux faire
ya bcp de cas
exemple
$chaine="pour faire ce genre de travail";
tu veux remplacer le tout mais garder le mot "genre" par exemple
bah, ya le "pour faire ce" qui est avant le mot à garder et ya aussi "de travail" apres le mot,
une expliquation de ce que tu veux vraiment faire ?
Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

vas voir du côté de preg_replace().
Messages postés
8
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
6 décembre 2007

Un grand merci