Parser une chaine de caractere de longueur variable - PHP - Programmation
Marsh Posté le 19-03-2010 à 18:22:20
regarde du côté des expressions regulières et principalement de preg_replace
Marsh Posté le 22-03-2010 à 08:18:21
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...
Marsh Posté le 22-03-2010 à 08:37:44
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
Marsh Posté le 22-03-2010 à 09:16:28
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 :
|
Va retourner la valeur 86866 dans la variable $matches?
Marsh Posté le 22-03-2010 à 13:56:38
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 :
|
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.
Marsh Posté le 22-03-2010 à 14:04:39
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
Marsh Posté le 19-03-2010 à 17:18:47
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!