PHP'de Telefon Numaraları Nasıl Doğrulanır: Regex'ten Ulaşılabilirlik API'sine

PHP'de Telefon Numaraları Nasıl Doğrulanır: Regex'ten Ulaşılabilirlik API'sine

Telefon numaralarını doğrulamak üzerine kapsamlı bir PHP eğitimi. libphonenumber-for-php ile biçimlendirmeyi ve REST API aracılığıyla ulaşılabilirliği doğrulamayı öğrenin.

PHP’de bir telefon numarasını doğrulamak için, E.164 standardını karşıladığından emin olmak üzere öncelikle girdiyi giggsey/libphonenumber-for-php kütüphanesini kullanarak biçimlendirin. PHP kütüphaneleri yalnızca sözdizimini doğruladığından, numara grubunuzun ulaşılabilir olup olmadığını ve iMessage veya Viber gibi platformlarda kayıtlı olup olmadığını sessizce doğrulamak için NumberChecker.AI gibi bir REST API kullanmalısınız.


PHP Telefon Doğrulaması İçin Ön Koşullar

Doğrulama betiğini yazmadan önce, ortamınızın hem yerel biçimlendirme hem de uzak ulaşılabilirlik kontrolleri için ayarlandığından emin olun. Yerel ayrıştırma kütüphanesini yönetmek için bir paket yöneticisine ve 200’den fazla ülkede gerçek ulaşılabilirlik kontrollerini gerçekleştirmek için bir API anahtarına ihtiyacınız olacak.

Aşağıdakilerin hazır olduğundan emin olun:

  • Sunucunuzda veya yerel ortamınızda kurulu PHP 7.4 veya üzeri.
  • giggsey/libphonenumber-for-php paketini dahil etmek için global olarak kurulu Composer.
  • Toplu grup doğrulaması için bir NumberChecker.AI API anahtarı.

Gerekli biçimlendirme kütüphanesini kurmak için terminalinizde aşağıdaki komutu çalıştırın:

composer require giggsey/libphonenumber-for-php

1. Adım: Temel PHP Regex ve filter_var’ın Sınırları

Geliştiriciler genellikle telefon numaralarını doğrulamak için preg_match veya filter_var kullanarak başlarlar. Örneğin, preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone) gibi temel bir regex, tek bir bölge için belirli bir deseni zorunlu kılabilir.

Ancak, bu temel PHP yöntemleri yalnızca sözdizimini kontrol eder ve bir numaranın gerçek olup olmadığını onaylayamaz. Yalnızca regex’e güvenmek, ulaşılabilirliği veya platform kaydını doğrulayamadığı için yanlış pozitiflere yol açar. Dahası, regex değişen uluslararası biçimlere uyum sağlamak için sürekli güncelleme gerektirir. filter_var tam sayıları veya temel dizeleri standartlaştırmak için mükemmel olsa da, küresel arama kodlarını doğru bir şekilde doğrulamak için gereken karmaşık telekom kurallarından yoksundur.


2. Adım: libphonenumber-for-php ile Biçimlendirme

Sözdizimini düzgün bir şekilde doğrulamak ve numaraları E.164 standardına göre biçimlendirmek için giggsey/libphonenumber-for-php kütüphanesini kullanın. giggsey/libphonenumber-for-php kütüphanesi, uzunluk ve ülke kuralları için Google’ın telekom meta verilerini içerir ve yerel sözdizimi kontrollerinizin mümkün olduğunca doğru olmasını sağlar.

Numaraları bir API’ye göndermeden önce E.164’e göre biçimlendirmemek doğrulama hatalarına neden olabilir. Aşağıdaki çalıştırılabilir PHP kodu, bir grup ham girdiyi nasıl ayrıştıracağınızı ve bunları nasıl doğru şekilde biçimlendireceğinizi gösterir:

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);

3. Adım: NumberChecker.AI REST API Aracılığıyla Ulaşılabilirliği Doğrulama

Numara grubunuz E.164’e göre biçimlendirildikten sonraki adım, gerçek ulaşılabilirliği doğrulamaktır. NumberChecker.AI, gerçek zamanlı, sessiz telefon numarası ulaşılabilirliği ve platform doğrulaması için bir REST API sağlar. NumberChecker.AI, iMessage, Viber ve Apple dahil olmak üzere 45’ten fazla platform dedektörünü destekler.

NumberChecker.AI, CSV/TXT veya REST API aracılığıyla toplu grup doğrulaması için tasarlanmıştır. Örneğin, iMessage denetleyicisi minimum 2.000 numaralık bir grubu kabul eder. En önemlisi, NumberChecker.AI hesap sahibine bildirimde bulunmadan sessiz kontroller gerçekleştirir.

İşte biçimlendirilmiş grubunuzu API’ye göndermek için cURL kullanan çalıştırılabilir bir PHP betiği:

// 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";
}

Telefon Doğrulamasının Dürüst Sınırlamaları

PHP’de bir doğrulama iş akışı oluştururken, kullandığınız araçların sınırlarını anlamak önemlidir.

  • Sözdizimi ve Ulaşılabilirlik: PHP kütüphaneleri ulaşılabilirliği değil, yalnızca sözdizimini onaylayabilir. Bir numara Google’ın meta verilerine göre mükemmel bir şekilde biçimlendirilmiş olabilir ancak yine de bağlantısı kesilmiş veya aktif olmayabilir.
  • Biçimlendirme Gereksinimleri: API kontrollerinin doğru çalışması için geçerli E.164 biçimlendirmesi gerekir. API isteklerini hatalı dizeler üzerinde boşa harcamamak için ham kullanıcı girdisi her zaman önce yerel olarak ayrıştırılmalıdır.
  • Toplu İşleme Odaklılık: NumberChecker.AI, tek bir numara sorgulama aracı değil, bir toplu işleme aracıdır. İş akışları, her bir kullanıcı kaydı için ayrı HTTP istekleri yapmak yerine numaraları bir araya getirecek ve toplu olarak (örneğin, platform dedektörüne bağlı olarak minimum 1.000 ila 2.000’lik gruplar halinde) gönderecek şekilde tasarlanmalıdır.

Sıkça Sorulan Sorular (SSS)

PHP bir telefon numarasının aktif olup olmadığını yerel olarak doğrulayabilir mi?

Hayır, preg_match ve filter_var gibi temel PHP yöntemleri yalnızca sözdizimini kontrol eder ve bir numaranın gerçek veya aktif olup olmadığını onaylayamaz. Gerçek ulaşılabilirliği doğrulamak için üçüncü taraf bir API kullanmalısınız.

PHP’de uluslararası telefon numaraları için en iyi regex nedir?

Yalnızca regex’e güvenmek, ulaşılabilirliği veya platform kaydını doğrulayamadığı ve uluslararası biçimler için sürekli güncelleme gerektirdiği için yanlış pozitiflere yol açar. Doğru sözdizimi doğrulaması için regex yerine giggsey/libphonenumber-for-php kütüphanesini kullanın.

PHP’de telefon numaralarını E.164’e göre nasıl biçimlendiririm?

Composer aracılığıyla giggsey/libphonenumber-for-php kütüphanesini kurarak, ham girdiyi PhoneNumberUtil::getInstance()->parse() kullanarak ayrıştırarak ve ardından PhoneNumberFormat::E164 ile biçimlendirerek telefon numaralarını E.164 standardına göre biçimlendirebilirsiniz.

NumberChecker.AI ile Başlayın

NumberChecker.AI’yi ücretsiz deneyin — kayıtta 1.000 kontrol, kredi kartı gerekmez.

Başlamaya hazır mısınız?

WhatsApp numara doğrulama hizmetimizi deneyin ve temiz verinin farkını görün.

Ücretsiz aracı deneyin İletişim