Php mendeteksi nomor telepon dalam string

↪️ Kami merekomendasikan penggunaan Verify API V2 untuk pengembangan baru. Lihat postingan ini tentang Cara Verifikasi Nomor Telepon di Aplikasi Laravel PHP dengan Twilio Verify API

API Verifikasi adalah evolusi dari API Authy yang digunakan dalam artikel ini. Setiap fitur dan pengembangan baru akan ada di Verify API. Lihat FAQ untuk informasi selengkapnya dan Verifikasi Referensi API untuk memulai

pengantar

Mungkin ada kalanya dalam membangun aplikasi Anda perlu mengirim SMS ke nomor telepon pengguna. Bukankah luar biasa jika Anda bisa memastikan bahwa nomor yang diberikan sebenarnya adalah ponsel? . Dengan API Authy Twilio, kasus penggunaan ini mudah diterapkan. Tutorial ini ditujukan untuk membantu pengembang membangun validator nomor telepon untuk memverifikasi nomor telepon pengguna di aplikasi PHP apa pun dan memeriksa apakah nomor tersebut adalah ponsel atau telepon rumah sebelum mengirim SMS

Persyaratan Teknis

Untuk tutorial ini, diharapkan Anda memiliki pengetahuan dasar berikut ini

  • Komposer
  • Sudah familiar dengan Laravel
  • Pahami PHP 5+
  • Memiliki akun Twilio

CATATAN. Jangan lupa untuk membuat proyek Laravel untuk tujuan ini. Berikut tautan ke panduan tentang proses instalasi untuk menginstal Laravel

Verifikasi Nomor Telepon

Pertama, kita perlu menginstal Twilio PHP SDK yang menyediakan fungsi yang kita perlukan untuk melakukan tugas memverifikasi nomor telepon. Di folder root proyek Laravel Anda, jalankan perintah berikut

$ composer require twilio/sdk authy/php

Setelah berhasil menginstal Twilio SDK, kita perlu mengkonfigurasi aplikasi klien agar dapat berkomunikasi dengan akun Twilio kita. Untuk melakukan ini, tambahkan berikut ini ke file

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
4 Anda. Ini harus dilakukan setelah Anda membuat aplikasi Authy di Konsol Twilio Anda

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_

CATATAN. "AUTHY_API_KEY" Anda dapat diambil dari tab Pengaturan aplikasi Authy yang baru saja Anda buat dan "TWILIO_PHONE" adalah Nomor Telepon Twilio Anda

Sekarang tambahkan kode di bawah ini di

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_5 untuk mengakses variabel konfigurasi Twilio secara global

'twilio' => [
   'AUTHY_API_KEY'  => env('AUTHY_API_KEY'),
   'TWILIO_ACCOUNT_SID'  => env('TWILIO_ACCOUNT_SID'),
   'TWILIO_AUTH_TOKEN'  => env('TWILIO_AUTH_TOKEN'),
   'TWILIO_PHONE'  => env('TWILIO_PHONE'),
],
_

Sekarang setelah kita selesai dengan penyiapan penginstalan dasar, kita akan mulai membuat metode pengontrol untuk memproses permintaan Twilio kita. Ini dapat dicapai dengan menggunakan perintah berikut dan harus dilakukan di dalam direktori proyek Anda

$ php artisan make:controller TwilioController

Buka file pengontrol yang baru dibuat yang terletak di

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
6 dan impor kelas Twilio AuthyApi yang akan digunakan untuk verifikasi nomor telepon dan memeriksa kode verifikasi

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\Rest\Client;
use Authy\AuthyApi;

Selanjutnya, kita akan menginisialisasi konstruktor, menentukan variabel yang diperlukan, dan membuatnya dapat diakses di dalam controller. Tambahkan kode berikut

<?php

class TwilioController extends Controller
{
   protected $authy;
   protected $sid;
   protected $authToken;
   protected $twilioFrom;

   public function __construct() {
       // Initialize the Authy API and the Twilio Client
       $this->authy = new AuthyApi(config('app.twilio')['AUTHY_API_KEY']);
       // Twilio credentials
       $this->sid = config('app.twilio')['TWILIO_ACCOUNT_SID'];
       $this->authToken = config('app.twilio')['TWILIO_AUTH_TOKEN'];
       $this->twilioFrom = config('app.twilio')['TWILIO_PHONE'];
   }

}
_

Sekarang buat metode pengontrol untuk memverifikasi nomor telepon pengguna. Setelah validasi, itu akan mengirimkan kode verifikasi ke pengguna yang akan digunakan pada langkah selanjutnya. Selanjutnya, buat metode lain untuk memverifikasi kode verifikasi yang dikirimkan ke pengguna

<?php

public function verifyPhone(Request $request) {
       // Validate form input
       $this->validate($request, [
           'country_code' => 'required|string|max:3',
           'phone' => 'required|string|max:10',
           'via' => 'required|string'
       ]);

       //Call the "phoneVerification" method from the Authy API and pass the phone number, country code and verification channel(whether sms or call) as parameters to this method.
       $response = $this->authy->phoneVerificationStart($request->phone, $request->country_code, $request->via);
      
       if ($response->ok()) {
           print $response->message();
       } else  {
           print $response->message();
       }
}

public function verifyCode(Request $request) {
       // Call the method responsible for checking the verification code sent.
       $response = $this->authy->phoneVerificationCheck($request->phone, $request->country_code, $request->code);
       if($response->ok()) {
           print $response->message();
       } else {
           print $response->message();
       }
}
_

Buka

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_7 yang terletak di folder
AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
8 dan rekatkan kode berikut untuk metode verifikasi kode verifikasi telepon

Route::view('/verify', 'phone-verification');
Route::post('/verify', 'TwilioController@verifyPhone')->name('verify-phone');
Route::post('/verify-code', 'TwilioController@verifyCode')->name('verify-code');

Selanjutnya, buat file di direktori

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_9 bernama
'twilio' => [
   'AUTHY_API_KEY'  => env('AUTHY_API_KEY'),
   'TWILIO_ACCOUNT_SID'  => env('TWILIO_ACCOUNT_SID'),
   'TWILIO_AUTH_TOKEN'  => env('TWILIO_AUTH_TOKEN'),
   'TWILIO_PHONE'  => env('TWILIO_PHONE'),
],
0 yang akan digunakan untuk menerima input pengguna. Tambahkan berikut ini ke file yang baru saja Anda buat

<html>
 <head>
   <title>Twilio + Laravel</title>

   <!-- Bootstrap -->
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <style>
     form {
       background-color: #fff;
       width: 600px;
       float: center;
       margin: auto;
       margin-top: 100px;
     }
   </style>
 </head>
 <body>
   @if ($errors->any())
     <div class="alert alert-danger">
         <ul>
             @foreach ($errors->all() as $error)
                 <li>{{ $error }}</li>
             @endforeach
         </ul>
     </div>
   @endif
   <form method="post" action="{{ route('verify-phone') }}">
     {{csrf_field()}}
     <h4>Phone Verification</h4>
     <div class="row">
       <div class="form-group col-md-3">
         <label>Country code</label>
         <input type="text" class="form-control" name="country_code" aria-describedby="emailHelp" placeholder="123">
         <small id="emailHelp" class="form-text text-muted">Country dial code for phone number.</small>
       </div>
       <div class="form-group col-md-6">
         <label for="phoneNumber">Phone Number</label>
         <input type="text" class="form-control" name="phone" id="phoneNumber" aria-describedby="phoneNumberHelp" placeholder="1234567890">
         <small id="emailHelp" class="form-text text-muted">Phone number to be verified.</small>
       </div>
       <div class="form-group col-md-3">
         <label for="via">via</label>
         <select class="form-control" name="via" id="exampleFormControlSelect1">
           <option value="sms">SMS</option>
           <option value="call">Call</option>
         </select>
       </div>
     </div>
     <button type="submit" class="btn btn-primary">Submit</button>
   </form>

   <form method="post" action="{{ route('verify-code') }}">
     {{csrf_field()}}
     <h4>Code Verification</h4>
     <div class="row">
       <div class="form-group col-md-3">
         <label>Country code</label>
         <input type="text" class="form-control" name="country_code" aria-describedby="codeHelp" placeholder="123">
         <small id="codeHelp" class="form-text text-muted">Country dial code for phone number.</small>
       </div>
       <div class="form-group col-md-6">
         <label for="phoneNumber">Phone Number</label>
         <input type="text" class="form-control" name="phone" id="phoneNumber" aria-describedby="phoneNumberHelp" placeholder="1234567890">
         <small id="phoneNumberHelp" class="form-text text-muted">Phone number to be verified.</small>
       </div>
       <div class="form-group col-md-3">
         <label for="code">Code</label>
         <input type="text" class="form-control" name="code" placeholder="1234">
       </div>
     </div>
     <button type="submit" class="btn btn-primary">Submit</button>
   </form>

   <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
 </body>
</html>

Mengirim SMS

Kami telah membuat dan menentukan variabel yang diperlukan yang kami perlukan untuk aplikasi ini untuk memverifikasi nomor telepon kami. Kami sekarang akan melanjutkan untuk membuat logika untuk mengirim SMS kami

Buat file di direktori

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_9 bernama
'twilio' => [
   'AUTHY_API_KEY'  => env('AUTHY_API_KEY'),
   'TWILIO_ACCOUNT_SID'  => env('TWILIO_ACCOUNT_SID'),
   'TWILIO_AUTH_TOKEN'  => env('TWILIO_AUTH_TOKEN'),
   'TWILIO_PHONE'  => env('TWILIO_PHONE'),
],
2 dan tambahkan kode berikut ke dalamnya

<html>
 <head>
   <title>Twilio + Laravel</title>

   <!-- Bootstrap -->
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <style>
     form {
       background-color: #fff;
       width: 600px;
       float: center;
       margin: auto;
       margin-top: 100px;
     }
   </style>
 </head>
 <body>
   @if ($errors->any())
     <div class="alert alert-danger">
         <ul>
             @foreach ($errors->all() as $error)
                 <li>{{ $error }}</li>
             @endforeach
         </ul>
     </div>
   @endif
  
   <form  method="post" action="{{ route('send-sms') }}">
     {{csrf_field()}}
     <h4>Send SMS</h4>
     <div class="row">
       <div class="form-group col-6">
         <label for="phoneNumber">Phone Number</label>
         <input type="text" class="form-control" name="phone" id="phoneNumber" aria-describedby="phoneNumberHelp" placeholder="+1231234567890">
         <small id="phoneNumberHelp" class="form-text text-muted">Phone number to send SMS.</small>
       </div>
     </div>
     <div class="row">
       <div class="form-group col-md-12">
         <label>Text Message</label>
         <input type="text" name="message" class="form-control" id="text" aria-describedby="phoneNumberHelp" placeholder="Message here...">
       </div>
     </div>
     <button type="submit" class="btn btn-primary">Submit</button>
   </form>

   <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
 </body>
</html>

Rute

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_0

TwilioController

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_1

Ini kode TwilioController lengkapnya

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_2

Pengujian

Setelah semua ini selesai, Anda pasti ingin melihat cara kerjanya. Yang perlu Anda lakukan hanyalah memulai server pengembangan menggunakan perintah di bawah ini di terminal (Unix)/Command Prompt (Windows) Anda

AUTHY_API_KEY=XXXXXXXXXXXXXXXXXXXX
TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_PHONE=APXXXXXXXXXXXXXXXXXXX
_3

Sekarang, menggunakan browser pilihan Anda, kunjungi http. // localhost. 8000/verifikasi (untuk verifikasi telepon) atau http. // localhost. 8000/send-sms (untuk pengiriman SMS). Isi formulir dan kirimkan. Pada

'twilio' => [
   'AUTHY_API_KEY'  => env('AUTHY_API_KEY'),
   'TWILIO_ACCOUNT_SID'  => env('TWILIO_ACCOUNT_SID'),
   'TWILIO_AUTH_TOKEN'  => env('TWILIO_AUTH_TOKEN'),
   'TWILIO_PHONE'  => env('TWILIO_PHONE'),
],
_3, masukkan nomor telepon rumah untuk menguji API informasi telepon Authy. Saat dikirim, itu harus mengembalikan kesalahan

Kesimpulan

Berikut ini, Anda dapat melihat betapa mudahnya memverifikasi nomor telepon dan juga mengirim SMS menggunakan layanan Twilio. Sekarang Anda dapat melanjutkan dan membangun proyek berbasis komunikasi yang luar biasa

Bagaimana cara mendapatkan nomor telepon dari string di PHP?

[0-9]{3} cocok dengan 3 angka (ganti 3. ) .
010-1234010
010 1234010
010 123 4010
0101234010
010-010-0100

Bisakah nomor telepon menjadi string?

Nomor ponsel tidak disimpan sebagai bilangan bulat, karena tipe data bilangan bulat memiliki nilai yang berpotensi untuk digunakan dalam penghitungan. Tidak ada konteks untuk menggunakan nomor ponsel sebagai bagian dari penghitungan, jadi disimpan sebagai nilai STRING .

Bagaimana cara mengekstrak nomor telepon dari string dengan Python?

Ekstraktor Nomor Telepon & Email Dengan Python .
Dapatkan teks dari clipboard
Temukan semua nomor telepon & tambahkan email
Rekatkan ke clipboard. .
Gunakan modul pyperclip untuk menyalin dan menempelkan string
Buat dua regex , satu untuk mencocokkan nomor telepon dan yang lainnya untuk mencocokkan alamat email