Expressions régulières

Expressions régulières - PHP - Programmation

Marsh Posté le 06-03-2015 à 15:53:03    

Bonjour tout le monde :)
 
Etant une quiche en regex ( :D ), j'ai un petit problème pour transformer une chaine de la forme XXXXYYYYZZZZAABB... en xx:xx:yy:yy:zz:zz:aa:bb:...
 
J'ai fais un petit

Code :
  1. return mb_strtolower(implode(':', mb_split('#[a-zA-Z0-9]{2}#', $fingerprint)));


 
Mais bien sûr ca ne marche pas, sinon je ne serais pas en train de faire ce post  :o  
 
 
Bon, je pourrais la faire à l'ancienne avec un for, un mb_strlen et un mb_substr et un petit modulo dans ma boucle, mais je trouve qu'une regex, c'est plus bôôôô  :whistle:  
 
Merci :D


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 06-03-2015 à 15:53:03   

Reply

Marsh Posté le 06-03-2015 à 16:01:08    

str_split
Les regex c'est bien, en abusé ça craint... ^^


---------------
D3
Reply

Marsh Posté le 06-03-2015 à 16:03:42    

Effectivement, ca le ferait, mais la fonction mb correspondante n'existe pas :( Mais je pense que je vais quand même utiliser celà.
En tout cas merci :jap:  
 
Mais pour mon inculture personnelle, si quelqu'un pouvait m'expliquer mon erreur dans ma regex, ca serait top :jap:


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 06-03-2015 à 20:29:02    

up :o


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 07-03-2015 à 03:46:49    

Ben si tu veux une expression régulière, et bosser en multibyte, il suffit de faire ceci:
return mb_ereg_replace('(..)(?=.)', '\1:', mb_strtolower($fingerprint));
Bref, tu fous tout en minuscule, et tu fait un remplacement global ou tout groupe de 2 caractères (non final) est remplacé par lui-même suivi de :
 
A+,


Message édité par gilou le 07-03-2015 à 03:57:39

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 08-03-2015 à 20:07:17    

Impeccable, merci beaucoup gilou :jap:  
Et ca me donne un peu un vision de l'étendue de ma méconnaissance des regex :whistle: Va falloir que je regarde ça de plus près :o


---------------
Un cycle complet sera une série de 100.
Reply

Marsh Posté le 09-03-2015 à 10:37:52    

Une autre solution qui se rapproche de str_split() mais pour l'UTF-8 :
http://php.net/manual/en/function.str-split.php
 
Voir la fonction présentée dans le premier commentaire ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 26-06-2015 à 15:24:01    

moi je ferai çà:
implode(":",chunk_split(strtolower("XXXXYYYYZZZZAABB" ),2))
CQFD :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed