[resolu] rexex capturante pour numéro de téléphone

rexex capturante pour numéro de téléphone [resolu] - PHP - Programmation

Marsh Posté le 01-12-2016 à 23:28:55    

Bonjour,
Je désire écrire une expression régulière pour capturer les numéros de téléphones, j'ai donc écrit ceci :
 

Code :
  1. $pattern = '/(0[1-68]([\-. ]?\d{2}){4})/';
  2. $replacement = '<img height="10px" src="phone.svg"/> <a href="tel:$1">$1</a>';
  3. $string = "tset 01 23 65 89 74 fdsfs";
  4. echo preg_replace($pattern, $replacement, $string);


 
Mais je ne suis pas entièrement satisfait, car je voudrais restitué la capture de manière homogène (des numéros de téléphones sont écrit dans des styles différents, et je voudrais tous les réécrire sous la même forme). J'ai donc écrit ça :
 

Code :
  1. $pattern = '/(0[1-68])([\-. ]?(\d{2})){4}/';
  2. $replacement  = '<img height="10px" src="phone.svg"/> <a href="tel:$1$2$3$4$5">$1-$2-$3-$4-$5</a>';
  3. $string = "tset 05 56 66 22 26 fdsfs";
  4. echo preg_replace($pattern, $replacement, $string);


 
Mais ça ne restitue pas ce que je voudrais :
 

Code :
  1. 05-26-26---


 
Je pense que c'est parce que les parenthèses capturantes sont en conflit avec celle pour répéter le pattern [\-. ]?(\d{2}) 4 fois.  
Mais je n'ai pas d'idée pour corriger cela en dehors de mettre 4 fois \d, ce qui serait moche.
 
Auriez-vous une idée ?  
 
Merci !


Message édité par naeco le 04-12-2016 à 17:04:50
Reply

Marsh Posté le 01-12-2016 à 23:28:55   

Reply

Marsh Posté le 03-12-2016 à 19:03:34    

Il faut que tu fasses un groupe non capturant:

Code :
  1. (?:pattern)


---------------
sheep++
Reply

Marsh Posté le 04-12-2016 à 17:04:12    

En effet, merci. :jap:

Reply

Sujets relatifs:

Leave a Replay

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