So validieren Sie Telefonnummern in PHP: Von Regex zur Erreichbarkeits-API

So validieren Sie Telefonnummern in PHP: Von Regex zur Erreichbarkeits-API

Ein umfassendes PHP-Tutorial zur Validierung von Telefonnummern. Lernen Sie die Formatierung mit libphonenumber-for-php und die Überprüfung der Erreichbarkeit über eine REST-API.

Um eine Telefonnummer in PHP zu validieren, formatieren Sie die Eingabe zunächst mit der Bibliothek giggsey/libphonenumber-for-php, um sicherzustellen, dass sie dem E.164-Standard entspricht. Da PHP-Bibliotheken nur die Syntax überprüfen, müssen Sie anschließend eine REST-API wie NumberChecker.AI verwenden, um stillschweigend zu überprüfen, ob Ihr Nummern-Batch erreichbar und auf Plattformen wie iMessage oder Viber registriert ist.


Voraussetzungen für die PHP-Telefonnummernvalidierung

Bevor Sie das Validierungsskript schreiben, stellen Sie sicher, dass Ihre Umgebung sowohl für die lokale Formatierung als auch für Remote-Erreichbarkeitsprüfungen eingerichtet ist. Sie benötigen einen Paketmanager zur Verwaltung der lokalen Parsing-Bibliothek und einen API-Schlüssel, um die eigentlichen Erreichbarkeitsprüfungen in über 200 Ländern durchzuführen.

Stellen Sie sicher, dass Sie Folgendes bereithalten:

  • PHP 7.4 oder höher auf Ihrem Server oder in Ihrer lokalen Umgebung installiert.
  • Composer global installiert, um das Paket giggsey/libphonenumber-for-php anzufordern.
  • Ein NumberChecker.AI API-Schlüssel für die Massen-Batch-Überprüfung.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die erforderliche Formatierungsbibliothek zu installieren:

composer require giggsey/libphonenumber-for-php

Schritt 1: Die Grenzen von einfachem PHP-Regex und filter_var

Entwickler beginnen oft mit der Verwendung von preg_match oder filter_var, um Telefonnummern zu validieren. Ein einfaches Regex wie preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone) kann beispielsweise ein bestimmtes Muster für eine einzelne Region erzwingen.

Diese grundlegenden PHP-Methoden prüfen jedoch nur die Syntax und können nicht bestätigen, ob eine Nummer echt ist. Sich ausschließlich auf Regex zu verlassen, führt zu falsch-positiven Ergebnissen, da weder die Erreichbarkeit noch die Plattformregistrierung überprüft werden können. Darüber hinaus erfordert Regex ständige Aktualisierungen, um sich an ändernde internationale Formate anzupassen. Während filter_var hervorragend zur Standardisierung von Ganzzahlen oder einfachen Zeichenfolgen geeignet ist, fehlen ihm die komplexen Telekommunikationsregeln, die zur genauen Validierung globaler Vorwahlen erforderlich sind.


Schritt 2: Formatierung mit libphonenumber-for-php

Um die Syntax ordnungsgemäß zu validieren und Nummern in den E.164-Standard zu formatieren, verwenden Sie die Bibliothek giggsey/libphonenumber-for-php. Die Bibliothek giggsey/libphonenumber-for-php integriert die Telekommunikations-Metadaten von Google für Längen- und Länderregeln und stellt so sicher, dass Ihre lokalen Syntaxprüfungen so genau wie möglich sind.

Wenn Nummern vor dem Senden an eine API nicht in E.164 formatiert werden, kann dies zu Validierungsfehlern führen. Der folgende ausführbare PHP-Code zeigt, wie ein Batch von Roheingaben geparst und korrekt formatiert wird:

require 'vendor/autoload.php';
use libphonenumber\PhoneNumberUtil;
use libphonenumber\PhoneNumberFormat;
use libphonenumber\NumberParseException;

$phoneUtil = PhoneNumberUtil::getInstance();
$rawNumbers = ['+12025550123', '07700900077', 'invalid_string'];
$formattedNumbers = [];

foreach ($rawNumbers as $number) {
    try {
        // Parse assuming US as default region if no country code is provided
        $proto = $phoneUtil->parse($number, "US");
        
        if ($phoneUtil->isValidNumber($proto)) {
            $formattedNumbers[] = $phoneUtil->format($proto, PhoneNumberFormat::E164);
        }
    } catch (NumberParseException $e) {
        // Silently skip or log invalid formats
        error_log("Error parsing $number: " . $e->getMessage());
    }
}

// $formattedNumbers now contains strictly E.164 formatted strings
print_r($formattedNumbers);

Schritt 3: Überprüfung der Erreichbarkeit über die NumberChecker.AI REST-API

Sobald Ihr Nummern-Batch in E.164 formatiert ist, besteht der nächste Schritt in der Überprüfung der tatsächlichen Erreichbarkeit. NumberChecker.AI bietet eine REST-API für die stille Echtzeit-Überprüfung der Erreichbarkeit von Telefonnummern und Plattformen. NumberChecker.AI unterstützt über 45 Plattform-Detektoren, darunter iMessage, Viber und Apple.

NumberChecker.AI ist für die Massen-Batch-Überprüfung via CSV/TXT oder REST-API konzipiert. Der iMessage-Checker akzeptiert beispielsweise einen Mindest-Batch von 2.000 Nummern. Entscheidend ist, dass NumberChecker.AI stille Prüfungen durchführt, ohne den Kontoinhaber zu benachrichtigen.

Hier ist ein ausführbares PHP-Skript, das cURL verwendet, um Ihren formatierten Batch an die API zu senden:

// Assuming $formattedNumbers contains valid E.164 numbers from Step 2
$apiKey = 'YOUR_API_KEY_HERE';
$apiUrl = 'https://api.numberchecker.ai/v1/imessage'; // Example endpoint

$payload = json_encode([
    'numbers' => $formattedNumbers
]);

$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $apiKey
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $results = json_decode($response, true);
    // Process the returned fields: Number, activated
    print_r($results);
} else {
    echo "API Request failed with HTTP status $httpCode";
}

Ehrliche Grenzen der Telefonnummernvalidierung

Beim Aufbau eines Validierungs-Workflows in PHP ist es wichtig, die Grenzen der verwendeten Tools zu verstehen.

  • Syntax vs. Erreichbarkeit: PHP-Bibliotheken können nur die Syntax bestätigen, nicht die Erreichbarkeit. Eine Nummer kann gemäß den Metadaten von Google perfekt formatiert sein, aber dennoch getrennt oder inaktiv sein.
  • Formatierungsanforderungen: API-Prüfungen erfordern eine gültige E.164-Formatierung, um korrekt zu funktionieren. Rohe Benutzereingaben müssen immer zuerst lokal geparst werden, um zu vermeiden, dass API-Anfragen für fehlerhafte Zeichenfolgen verschwendet werden.
  • Fokus auf Stapelverarbeitung: NumberChecker.AI ist ein Tool zur Stapelverarbeitung (Batch-Processing) und kein Tool zur Abfrage einzelner Nummern. Workflows sollten so gestaltet sein, dass Nummern aggregiert und in großen Mengen gesendet werden (z. B. Batches von mindestens 1.000 bis 2.000, abhängig vom Plattform-Detektor), anstatt individuelle HTTP-Anfragen für jede einzelne Benutzerregistrierung zu stellen.

Häufig gestellte Fragen (FAQ)

Kann PHP nativ überprüfen, ob eine Telefonnummer aktiv ist?

Nein, grundlegende PHP-Methoden wie preg_match und filter_var prüfen nur die Syntax und können nicht bestätigen, ob eine Nummer echt oder aktiv ist. Sie müssen eine Drittanbieter-API verwenden, um die tatsächliche Erreichbarkeit zu überprüfen.

Was ist das beste Regex für internationale Telefonnummern in PHP?

Sich ausschließlich auf Regex zu verlassen, führt zu falsch-positiven Ergebnissen, da weder die Erreichbarkeit noch die Plattformregistrierung überprüft werden können und ständige Aktualisierungen für internationale Formate erforderlich sind. Verwenden Sie anstelle von Regex die Bibliothek giggsey/libphonenumber-for-php für eine genaue Syntaxvalidierung.

Wie formatiere ich Telefonnummern in PHP nach E.164?

Sie können Telefonnummern in den E.164-Standard formatieren, indem Sie die Bibliothek giggsey/libphonenumber-for-php über Composer installieren, die Roheingabe mit PhoneNumberUtil::getInstance()->parse() parsen und sie dann mit PhoneNumberFormat::E164 formatieren.

Starten Sie mit NumberChecker.AI

Testen Sie NumberChecker.AI kostenlos — 1.000 Prüfungen bei der Anmeldung, keine Kreditkarte erforderlich.

Bereit loszulegen?

Testen Sie unseren WhatsApp-Nummernvalidierungs-Service und sehen Sie den Unterschied durch saubere Daten.

Kostenloses Tool testen Kontakt