PHPackages                             rdtvaacar/phonenumber - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. rdtvaacar/phonenumber

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

rdtvaacar/phonenumber
=====================

Phone number library

0.2.1(7y ago)0273MITPHPPHP &gt;=7.1

Since Apr 5Pushed 6y agoCompare

[ Source](https://github.com/rdtvaacar/phonenumber)[ Packagist](https://packagist.org/packages/rdtvaacar/phonenumber)[ RSS](/packages/rdtvaacar-phonenumber/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (4)Used By (0)

Brick\\PhoneNumber
==================

[](#brickphonenumber)

[![](https://raw.githubusercontent.com/brick/brick/master/logo.png)](https://raw.githubusercontent.com/brick/brick/master/logo.png)

A phone number library for PHP.

[![Build Status](https://camo.githubusercontent.com/d2c6f020f18430324b1b9f065b733413f27c81f02eedf5d91fa5d4814e383d53/68747470733a2f2f7365637572652e7472617669732d63692e6f72672f627269636b2f70686f6e656e756d6265722e7376673f6272616e63683d6d6173746572)](http://travis-ci.org/brick/phonenumber)[![Coverage Status](https://camo.githubusercontent.com/041265f36297a15b90565e3789be183476d95e3daba93b0f53542bc7f557f9f4/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f627269636b2f70686f6e656e756d6265722f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/r/brick/phonenumber?branch=master)[![Latest Stable Version](https://camo.githubusercontent.com/a4380aaedf558092862ea1f8c9606752b8dd74dca41d01f2bf118f0ec42d4290/68747470733a2f2f706f7365722e707567782e6f72672f627269636b2f70686f6e656e756d6265722f762f737461626c65)](https://packagist.org/packages/brick/phonenumber)[![Total Downloads](https://camo.githubusercontent.com/9f0035b61248df635b719c7fc34cb332ad83d420633408832a7f31bc452340d6/68747470733a2f2f706f7365722e707567782e6f72672f627269636b2f70686f6e656e756d6265722f646f776e6c6f616473)](https://packagist.org/packages/brick/phonenumber)[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](http://opensource.org/licenses/MIT)

This library is a thin wrapper around [giggsey/libphonenumber-for-php](https://github.com/giggsey/libphonenumber-for-php), itself a port of [Google's libphonenumber](https://github.com/googlei18n/libphonenumber).

It provides an equivalent functionality, with the following implementation differences:

- `PhoneNumber` is an immutable class; it can be safely passed around without having to worry about the risk for it to be changed;
- `PhoneNumber` is not just a mere data container, but provides all the methods to parse, format and validate phone numbers; it transparently encapsulates `PhoneNumberUtil`.

Installation
------------

[](#installation)

This library is installable via [Composer](https://getcomposer.org/):

```
composer require brick/phonenumber
```

Requirements
------------

[](#requirements)

This library requires PHP 7.1 or later. for PHP 5.6 and PHP 7.0 support, use version `0.1`.

Project status &amp; release process
------------------------------------

[](#project-status--release-process)

While this library is still under development, it is well tested and should be stable enough to use in production environments.

The current releases are numbered `0.x.y`. When a non-breaking change is introduced (adding new methods, optimizing existing code, etc.), `y` is incremented.

**When a breaking change is introduced, a new `0.x` version cycle is always started.**

It is therefore safe to lock your project to a given release cycle, such as `0.2.*`.

If you need to upgrade to a newer release cycle, check the [release history](https://github.com/brick/phonenumber/releases) for a list of changes introduced by each further `0.x.0` version.

Quick start
-----------

[](#quick-start)

All the classes lie in the `Brick\PhoneNumber` namespace.

To obtain an instance of `PhoneNumber`, use the `parse()` method:

- Using an international number: `PhoneNumber::parse('+336123456789')`;
- Using a national number and a country code: `PhoneNumber::parse('01 23 45 67 89', 'FR')`;

### Validating a number

[](#validating-a-number)

The `parse()` method is quite permissive with numbers; it basically attempts to match a country code, and validates the length of the phone number for this country.

If a number is really malformed, it throws a `PhoneNumberParseException`:

```
use Brick\PhoneNumber\PhoneNumber;
use Brick\PhoneNumber\PhoneNumberParseException;

try {
    $number = PhoneNumber::parse('+333');
}
catch (PhoneNumberParseException $e) {
    // 'The string supplied is too short to be a phone number.'
}
```

In most cases, it is recommended to perform an extra step of validation with `isValidNumber()` or `isPossibleNumber()`:

```
if (! $number->isPossibleNumber()) {
    // a more lenient and faster check than `isValidNumber()`
}

if (! $number->isValidNumber()) {
    // strict check relying on up-to-date metadata library
}
```

As a rule of thumb, do the following:

- When the number comes from user input, do a full validation: `parse()` and catch `PhoneNumberParseException`, then call `isValidNumber()` (or `isPossibleNumber()` for a more lenient check) if no exception occurred;
- When the number is later retrieved from your database, and has been validated before, you can just perform a blind `parse()`.

### Formatting a number

[](#formatting-a-number)

#### Basic formatting

[](#basic-formatting)

You can use `format()` with constants from the [PhoneNumberFormat](https://github.com/brick/phonenumber/blob/0.2.0/src/PhoneNumberFormat.php) class:

```
$number = PhoneNumber::parse('+41446681800');
$number->format(PhoneNumberFormat::E164); // +41446681800
$number->format(PhoneNumberFormat::INTERNATIONAL); // +41 44 668 18 00
$number->format(PhoneNumberFormat::NATIONAL); // 044 668 18 00
$number->format(PhoneNumberFormat::RFC3966); // tel:+41-44-668-18-00
```

#### Formatting to call from another country

[](#formatting-to-call-from-another-country)

You may want to present a phone number to an audience in a specific country, with the correct international prefix when required. This is what `formatForCallingFrom()` does:

```
$number = PhoneNumber::parse('+447123456789');
$number->formatForCallingFrom('GB'); // 07123 456789
$number->formatForCallingFrom('FR'); // 00 44 7123 456789
$number->formatForCallingFrom('US'); // 011 44 7123 456789
```

### Number types

[](#number-types)

In certain cases, it is possible to know the type of a phone number (fixed line, mobile phone, etc.), using the `getNumberType()` method, which returns a constant from the [PhoneNumberType](https://github.com/brick/phonenumber/blob/0.2.0/src/PhoneNumberType.php) class:

```
PhoneNumber::parse('+336123456789')->getNumberType(); // PhoneNumberType::MOBILE
PhoneNumber::parse('+33123456789')->getNumberType(); // PhoneNumberType::FIXED_LINE
```

If the type is unknown, the `PhoneNumberType::UNKNOWN` value is returned. Check the `PhoneNumberType` class for all possible values.

### Number information

[](#number-information)

You can extract the following information from a phone number:

```
$number = PhoneNumber::parse('+447123456789');
echo $number->getRegionCode(); // GB
echo $number->getCountryCode(); // 44
echo $number->getNationalNumber(); // 7123456789
```

### Example numbers

[](#example-numbers)

You can get an example number for a country code and an optional number type (defaults to fixed line). This can be useful to use as a placeholder in an input field, for example:

```
echo PhoneNumber::getExampleNumber('FR'); // +33123456789
echo PhoneNumber::getExampleNumber('FR', PhoneNumberType::MOBILE); // +33612345678
```

The return type of `getExampleNumber()` is a `PhoneNumber` instance, so you can format it as you like:

```
echo PhoneNumber::getExampleNumber('FR')->formatForCallingFrom('FR'); // 01 23 45 67 89
```

If no example phone number is available for the country code / number type combination, a `PhoneNumberException` is thrown.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~293 days

Total

3

Last Release

2738d ago

PHP version history (2 changes)0.1.0PHP &gt;=5.6

0.2.0PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/286fe1af829a5e5b5420cc161756595145eec530dce86314a57dbb883d44f5cc?d=identicon)[rdtvaacar](/maintainers/rdtvaacar)

---

Top Contributors

[![BenMorel](https://avatars.githubusercontent.com/u/1952838?v=4)](https://github.com/BenMorel "BenMorel (53 commits)")[![rdtvaacar](https://avatars.githubusercontent.com/u/3095828?v=4)](https://github.com/rdtvaacar "rdtvaacar (2 commits)")[![svenluijten](https://avatars.githubusercontent.com/u/11269635?v=4)](https://github.com/svenluijten "svenluijten (1 commits)")[![xificurk](https://avatars.githubusercontent.com/u/117465?v=4)](https://github.com/xificurk "xificurk (1 commits)")

---

Tags

brickphonephonenumberphone-number

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/rdtvaacar-phonenumber/health.svg)

```
[![Health](https://phpackages.com/badges/rdtvaacar-phonenumber/health.svg)](https://phpackages.com/packages/rdtvaacar-phonenumber)
```

###  Alternatives

[brick/phonenumber

Phone number library

4347.1M39](/packages/brick-phonenumber)[brick/math

Arbitrary-precision arithmetic library

2.1k504.0M277](/packages/brick-math)[odolbeau/phone-number-bundle

Integrates libphonenumber into your Symfony application

24910.3M11](/packages/odolbeau-phone-number-bundle)[brick/money

Money and currency library

1.9k37.9M102](/packages/brick-money)[brick/date-time

Date and time library

3623.3M61](/packages/brick-date-time)[brick/geo

GIS geometry library

245862.1k15](/packages/brick-geo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
