Вы можете легко выполнить простой поиск, начиная с первого числа, затем второго и так далее, пока не найдете его.Это будет работать правильно, потому что никакой код вызова не является префиксом другого кода, т. Е. Международные коды вызова образуют « код префикса » (телефонная система использует это свойство).
I 'я не очень хорошо разбираюсь в PHP, так что здесь простая реализация на python;надеюсь, за ним легко следовать:
>>> phone_numbers = ["+12345", "+23456", "+34567", "+45678"]
>>> country_codes = { "+1": "USA", "+234": "Nigeria", "+34" : "Spain" }
>>> for number in phone_numbers:
... for i in [2, 3, 4]:
... if number[:i] in country_codes:
... print country_codes[number[:i]]
... break
... else:
... print "Unknown"
...
USA
Nigeria
Spain
Unknown
По сути, у вас есть ассоциативный массив между префиксами и странами (который, я полагаю, вы легко можете сгенерировать из этой статьи в Википедии. Вы пытаетесь найти первую цифру телефонного номерав ассоциативном массиве. Если его нет в массиве, попробуйте первые две цифры, а затем первые три. Если после трех цифр нет совпадения, то это число не начинается с действительного международного кода вызова.