par
two3d » 22 oct. 2023, 17:46
Pour ceux qui aimeraient avoir une solution, j'ai réalisé une fonction de remplacement :
$texte = "Ces exemples illustrent différents formats de numéros de téléphone
États-Unis et Canada : +1 123-456-7890
Royaume-Uni : +44 20 1234 5678
France : +33 1 23 45 67 89
Allemagne : +49 30 12345678
Australie : +61 2 1234 5678
Japon : +81 3 1234 5678
Inde : +91 12345 67890
Chine : +86 10 1234 5678
Brésil : +55 11 1234-5678
Russie : +7 495 123-45-67";
//recherche tous les numéros de téléphone avec ou sans espaces, tirets ou points
//afin d'être sûr de trouver des numéros de téléphone on commence avec un "+\d", d'une longueur de 8 à X caractères/chiffres et on termine la patterne avec un chiffre "\d".
$regex = '#\+\d[\d\-.\s]{8,}\d#';
//remplace chaque correspondance par un lien "href tel:" avec les chiffres collés pour ne pas avoir de problème avec un numéro incorrect, comme +33.-54.54--54 -.54..54 (et selon la RFC 3966, les espaces ne doivent pas être utilisés dans les numéros de téléphone)
$texte = preg_replace_callback($regex, function($match){
$numero = $match[0];
$numero_sans_espaces = preg_replace('#[^\d]#', '', $match[0]);
return '<a href="tel:+' . $numero_sans_espaces . '">' . $numero . '</a>';
}, $texte);
echo '<pre>';
print_r($texte);
echo '</pre>';
Pour ceux qui aimeraient avoir une solution, j'ai réalisé une fonction de remplacement :
[PHP]$texte = "Ces exemples illustrent différents formats de numéros de téléphone
États-Unis et Canada : +1 123-456-7890
Royaume-Uni : +44 20 1234 5678
France : +33 1 23 45 67 89
Allemagne : +49 30 12345678
Australie : +61 2 1234 5678
Japon : +81 3 1234 5678
Inde : +91 12345 67890
Chine : +86 10 1234 5678
Brésil : +55 11 1234-5678
Russie : +7 495 123-45-67";
//recherche tous les numéros de téléphone avec ou sans espaces, tirets ou points
//afin d'être sûr de trouver des numéros de téléphone on commence avec un "+\d", d'une longueur de 8 à X caractères/chiffres et on termine la patterne avec un chiffre "\d".
$regex = '#\+\d[\d\-.\s]{8,}\d#';
//remplace chaque correspondance par un lien "href tel:" avec les chiffres collés pour ne pas avoir de problème avec un numéro incorrect, comme +33.-54.54--54 -.54..54 (et selon la RFC 3966, les espaces ne doivent pas être utilisés dans les numéros de téléphone)
$texte = preg_replace_callback($regex, function($match){
$numero = $match[0];
$numero_sans_espaces = preg_replace('#[^\d]#', '', $match[0]);
return '<a href="tel:+' . $numero_sans_espaces . '">' . $numero . '</a>';
}, $texte);
echo '<pre>';
print_r($texte);
echo '</pre>';[/PHP]