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 17/08/2007, 09h44   #1
Invité de passage
 
Inscription : août 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 1
Points : 0
Points : 0
Par défaut Supprimer chaine de caractères variable

Bonjour. Je debute en PHP et pour apprendre j'essaye de faire un outil qui me faciliterai la vie.

Mon probleme est le suivant :

J'utilise ce code pour recuperer des données d'un formulaire et supprimé tout ce dont je n'ai pas besoin :

Code :
1
2
3
4
5
6
7
8
9
10
$donnees = $_POST["liste"];
//met tous le texte en minuscule : 
$donnees = strtolower($donnees); 
//supprime tous les caractere entre guillemet dans la phrase : 
$degage = array("non communiqué", "gg", "intact", "etat :", "(spécial)", "composant - spécial", "-", "composant", "d'une", "d'un", "de", "d'", "qualité", "[", "]", "*", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
$variable = str_replace($degage, "", $donnees);
//coupe la chaine de caractere a chaque fois qu'il voit un ou plusieur espace : 
$tableau_mots1 = split(" +", trim($variable));
/*j'affiche les résultats du formulaire*/
print_r($tableau_mots1);
Mais dans les trois forme de chaine de caractere que je peux avoir dans le formulaire, j'ai un truc qui ressemble a ca :

n° une_expression_qui_varie intifié

Vu que l'expression varie je ne peux pas la supprimé avec ma méthode. J'ai fait quelques recherches mais je ne trouve pas si c'est possible de :

supprimé toutes chaines de caractère commençant par n° et finissant par intifié.

Si quelqu'un pouvait m'aider ca m'arrangerait bien.

Jebaka
jebaka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 10h29   #2
Inactif
 
Avatar de CR_Gio
 
Inscription : septembre 2005
Messages : 1 196
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 1 196
Points : 1 201
Points : 1 201
Bonjour a tous,


je ne voie pas le rapport entre le code que tu a poster et ta question, peut etre est ce moi...

Néanmoins, tu peu essayer ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
//n° une_expression_qui_varie intifié
$my_str='n° une_expression_qui_varie intifié';
$my_str='n° une phrase intifié cool intifié';
 
$regex="^n° (.*) intifié$";
if( ereg($regex, $my_str, $regs) )
{
  echo '<pre>';
  print_r($regs);
  echo '</pre>';
}
PS: il y des des accents donc fait attention avec l'encodage ( il faut utiliser le code ascci pour les regexp )
CR_Gio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 13h35   #3
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
Si jamais tu as plusieurs chaines de la sorte dans 1 longue chaine, remplace le .* par .*? sa evitera qu'il ne supprime les 3/4 de ta chaine ^^

et utilise plutot preg_match que ereg ^^
donc ta fonction sera de la forme
Code :
preg_match('#n° (.*?) intifié#', $chaine, $match);
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 08h50   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
Envoyé par CR_Gio Voir le message
Code :
 if( ereg($regex, $my_str, $regs) )
Je me permets de te rappeler que les fonctions ereg* sont désormais en PECL, elles ne sont donc plus activées par défaut. La raison est tout simplement que les fonctions preg* sont à la fois plus rapides et plus puissantes.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h02.


 
 
 
 
Partenaires

Hébergement Web