Envoyer un SMS en PHP avec une API REST (exemples PHP pur et Laravel)
Du premier SMS envoyé avec cURL à une classe réutilisable et un service Laravel, avec une gestion propre des erreurs.
Format +225, passage à 10 chiffres, préfixes Orange, MTN et Moov : comment normaliser et valider un numéro de téléphone ivoirien avant d'envoyer un SMS, avec exemples PHP, Python et JavaScript.
Avant d'envoyer un SMS ou un code de vérification, il faut un numéro correct. Or vos utilisateurs saisissent leur numéro de dix façons différentes : avec ou sans indicatif, avec des espaces, des points ou des tirets. Ce guide présente les formats ivoiriens et une méthode simple pour les normaliser côté serveur.
L'indicatif de la Côte d'Ivoire est +225. Depuis 2021, les numéros comptent 10 chiffres (l'ancien format avait 8 chiffres). Un numéro s'écrit donc :
+225 07 12 34 56 78 : format international ;00225 07 12 34 56 78 : même chose avec le préfixe d'appel international ;07 12 34 56 78 : format local à 10 chiffres.Les anciens numéros à 8 chiffres existent encore dans de nombreuses bases de contacts : prévoyez de les repérer et de les signaler plutôt que de les envoyer tels quels.
Les deux premiers chiffres du numéro local à 10 chiffres indiquent l'opérateur. Voici les préfixes que nous reconnaissons dans SMS Gold :
| Opérateur | Préfixes |
|---|---|
| Orange CI | 07, 08, 09, 27, 28, 29, 47, 48, 49, 57, 58, 59, 67, 68, 69, 77, 78, 79, 87, 88, 89 |
| MTN CI | 05, 06, 25, 26, 45, 46, 55, 56, 65, 66, 75, 76, 85, 86 |
| Moov Africa | 01, 02, 21, 22, 41, 42, 51, 52, 61, 62, 71, 72 |
Ce tableau évolue avec les plans de numérotation : ne le codez pas comme une vérité définitive pour bloquer des inscriptions. Utilisez-le plutôt pour des statistiques ou un contrôle de cohérence, et laissez la validation finale à l'envoi.
00 s'il est présent, puis l'indicatif 225.225XXXXXXXXXX (ou +225XXXXXXXXXX) : une seule représentation évite les doublons.function normalizeCI(input) {
let d = String(input).replace(/\D/g, '');
if (d.startsWith('00')) d = d.slice(2);
if (d.startsWith('225')) d = d.slice(3);
if (d.length !== 10) return null; // numéro invalide ou ancien format
return '225' + d;
}
normalizeCI('+225 07 12 34 56 78'); // '2250712345678'
normalizeCI('07.12.34.56.78'); // '2250712345678'
import re
def normalize_ci(value: str) -> str | None:
d = re.sub(r"\D", "", value or "")
if d.startswith("00"):
d = d[2:]
if d.startswith("225"):
d = d[3:]
return "225" + d if len(d) == 10 else None
function normalizeCI(string $value): ?string {
$d = preg_replace('/\D/', '', $value);
if (str_starts_with($d, '00')) $d = substr($d, 2);
if (str_starts_with($d, '225')) $d = substr($d, 3);
return strlen($d) === 10 ? '225' . $d : null;
}
+225 07… est correct. Ne le supprimez pas comme on le ferait pour la France.0712345678 et +2250712345678 comptent pour deux contacts, et vous les facturez deux fois.Une fois le numéro normalisé, il suffit de le transmettre à l'API. Les exemples complets sont dans nos guides PHP, Python et Node.js, et dans la documentation. Pour la vérification d'un numéro par code, lisez le guide de sécurité OTP.
Du premier SMS envoyé avec cURL à une classe réutilisable et un service Laravel, avec une gestion propre des erreurs.
Un SMS en quelques lignes avec requests, puis une fonction propre, réutilisable dans Django, FastAPI ou vos scripts.
Aucune dépendance nécessaire : Node.js 18+ intègre fetch. Exemples en JavaScript, TypeScript et Express.
Créez votre compte gratuitement, importez vos contacts et préparez vos messages. Vous activez l'envoi quand vous êtes prêt.