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

Gta3soluce Messages postés 8 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 6 décembre 2007 - 5 déc. 2007 à 15:53
Gta3soluce Messages postés 8 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 6 décembre 2007 - 6 déc. 2007 à 09:14
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
5 déc. 2007 à 19:31
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.
1
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
5 déc. 2007 à 17:00
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.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 déc. 2007 à 19:21
Hello,

vas voir du côté de preg_replace().
0
Gta3soluce Messages postés 8 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 6 décembre 2007
6 déc. 2007 à 09:14
Un grand merci
0
Rejoignez-nous