Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Parser une chaine de caractere de longueur variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parser une chaine de caractere de longueur variable

n°1975325
garath_
Posté le 19-03-2010 à 17:18:47  profilanswer
 

Bonjour,
 
Y a t'il un moyen "élégant" de parser une chaine de caractère de type "aaaaaaaa-123456-bbbbbbbb" pour en retirer le code 123456?
Où la chaine aaaaaaa est de longueur variable et la chaine bbbbbbbb aussi.
 
Bien sur c'est un exemple en vrai ça ressemble plutot à:
4-panasonic_lumix_dmc_tz7_10_1_mpixels_noir_-86866-numerique-appareil_photo_numerique_compact
 
Visiblement le code (qui est un id produit en fait) varie de 4 à 6 chiffres.
 
Merci de votre aide!

mood
Publicité
Posté le 19-03-2010 à 17:18:47  profilanswer
 

n°1975356
flo850
moi je
Posté le 19-03-2010 à 18:22:20  profilanswer
 

regarde du côté des expressions regulières  et principalement de preg_replace


Message édité par flo850 le 19-03-2010 à 18:22:35

---------------

n°1975842
garath_
Posté le 22-03-2010 à 08:18:21  profilanswer
 

preg_replace va me permettre de sortir l'id seulement s'il est connu non?
Moi je cherche justement à extraire ce numéro quelle que soit sa valeur, c'est possible avec cette fonction? Avec un masque peut être... :??:  
 
Peut être que le fait que l'id soit toujours encadré de "-" peut aider...

n°1975848
flo850
moi je
Posté le 22-03-2010 à 08:37:44  profilanswer
 

si il a une structur connu

 

donc plein de bordel-(ref)-pleind e bordel , ça se traite bien en expression regulières
preg_match si c'est pour extraire l'id
preg_replace pour le remplacer


Message édité par flo850 le 22-03-2010 à 08:37:51

---------------

n°1975858
garath_
Posté le 22-03-2010 à 09:16:28  profilanswer
 

ok... d'accord c'est donc là qu'interviennent ces fameux regex...
Je pensais y échapper, mais bon je vais me documenter un peu!
 
EDIT: Bon voilà c'est ma première fois, alors je ne suis pas sur de moi, mais voilà mon expression régulière pour les conditions citées ci-dessus:
 

Code :
  1. preg_match("-[0-9]{4,}-", "4-panasonic_lumix_dmc_tz7_10_1_mpixels_noir_-86866-numerique-appareil_photo_numerique_compact ", $matches)


 
Va retourner la valeur 86866 dans la variable $matches?


Message édité par garath_ le 22-03-2010 à 10:08:13
n°1975961
jeff@be
Posté le 22-03-2010 à 13:56:38  profilanswer
 

Oui.  
Attention que $matches est un tableau, donc 86866 sera contenu dans $matches[0].
 
En général on utilise le / comme délimiteur d'expression, et pas le - comme tu l'as fait.
 
Dans ton cas précis, voici l'expression que j'utiliserais:

Code :
  1. preg_match("/-([0-9]{4,})-/","4-panasonic_lumix_dmc_tz7_10_1_mpixels_noir_-86866-numerique-appareil_photo_numerique_compact ",$matches);


 
Pourquoi? Parce que comme cela tu t'assures que tu détectes 86866 uniquement s'il est entouré de "-".
 
Dans ce cas, $matches sera:
$matches[0] => -86866-
$matches[1] => 86866   (délimité par les parenthèses)
 
Ce sera donc $matches[1] qu'il faudra utiliser pour trouver ton Id.

n°1975965
garath_
Posté le 22-03-2010 à 14:04:39  profilanswer
 

Oui j'avais fait attention à ça mais le forum m'a enlevé les slash...
Mais tu as répondu à ma 2eme question pour extraire uniquement l'id!
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Parser une chaine de caractere de longueur variable

 

Sujets relatifs
memoire, variable et erreur de segmentationNombre variable de boucles imbriquées
decomposer une chaine de caractère[resolut]Problème avec une variable $_SESSION
Créer une variable serveurSaisir une variable int au clavier
Comment afficher une chaine avec une taille de police plus grandeProbleme variable fichier [ langage C ]
comment faire un moteur de recherche 
Plus de sujets relatifs à : Parser une chaine de caractere de longueur variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR