Использование libphonenumber в php

Я рассматриваю использование libphonenumber для преобразования номеров в дружественные местные телефонные номера.

например. если введено 19311234567, возвращается (931) 123 4567

Я нашел php-версию libphonenumber здесь: https://github.com/davideme/libphonenumber-for-PHP, но я не могу понять, как его использовать, чтобы получить то, что мне нужно.

Поэтому мне интересно, знает ли кто-нибудь, какие звонки мне нужно сделать, чтобы преобразовать номер телефона


person Charlie Smith    schedule 28.02.2012    source источник
comment
Вы когда-нибудь заставляли эту библиотеку работать правильно? У меня были проблемы с тем, чтобы заставить его идти самому.   -  person ackerchez    schedule 11.08.2012
comment
К вашему сведению: эта библиотека не поддерживает некоторые страны, phpinterviewquestions.co .in/блог/ionic/   -  person sijo vijayan    schedule 22.07.2017


Ответы (2)


С фактической реализацией вы можете отформатировать следующий код.

$phoneNumberUtil = PhoneNumberUtil::getInstance(); 
$exampleNumber = new PhoneNumber();
$exampleNumber->setCountryCode(1)->setNationalNumber(9311234567);
var_dump($phoneNumberUtil->format($exampleNumber, PhoneNumberFormat::INTERNATIONAL));
var_dump($phoneNumberUtil->format($exampleNumber, PhoneNumberFormat::NATIONAL));
var_dump($phoneNumberUtil->format($exampleNumber, PhoneNumberFormat::RFC3966));

Выход:

string(15) "+1 931 123 4567"
string(12) "931 123 4567"
string(15) "+1-931-123-4567"

Формат rawInput и free еще не реализован в версии PHP, но API будет похож на JAVA.

person Davide Mendolia    schedule 04.03.2012
comment
Спасибо за ваш ответ, у меня все еще есть трудности с этим, я думаю, это связано с тем, что я пытаюсь заставить его работать в плоской настройке PHP, а не в объектно-ориентированной? Когда я скопировал ваш код, после включения phonenumberutil,regioncode,phonenumber,countrycodetoregioncodemap, я получаю сообщение об ошибке. Использование $this, когда не контекст объекта. У вас есть полный рабочий пример, я просмотрел набор тестов, но это не похоже тоже работать, тот выдает ошибку PHPUnti_Framework_Testcase not found Так что я немного в тупике. Ваша помощь очень ценится. - person Charlie Smith; 13.03.2012
comment
Для запуска тестов вам необходимо установить PHPUnit. Можете ли вы прислать мне один из ваших тестовых случаев, и я отлаживаю его. - person Davide Mendolia; 16.03.2012
comment
Спасибо, Дэвид, как вы увидите в приведенном выше коде, проблема, с которой я столкнулся, заключается в том, что $this не работает в этом контексте, и я не уверен, как мне получить к нему доступ. - person Charlie Smith; 18.03.2012
comment
Хорошо, извините, мой пример был выполнен внутри тестового класса, вам нужно использовать PhoneNumberUtil::getInstance() вместо $this-›phoneUtil - person Davide Mendolia; 24.03.2012
comment
Я попытался использовать пример как есть, и он выдает ошибку сервера 500. Я также читал, что использование пространств имен в разных доменах — это серьезно не круто. При этом я все еще заинтересован в использовании этого, но, возможно, я не понимаю, как работает пространство имен. сначала используйте com\google\i18n\phonenumbers\PhoneNumberUtil; кажется, вызывает у меня проблемы. Любые мысли о том, как заставить это работать? - person ackerchez; 11.08.2012

Я разработал службы API, которые на самом деле являются оболочкой libphonenumber.

Вы можете получить национальный формат номера телефона:

curl http://phonenumber.ones-app.com/national-format?number=19311234567

(931) 123-4567

Полная справка: http://blog.ones-app.com/ones-phone-number-api/

person Azhar Nawaz    schedule 03.02.2016