123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- function _uk_phone_rules() {
-
- return '/^
- 0*(2[03489])(\d{4})(\d{4}) # 02x [eight-digit local number]
- |
- 0*(11[3-8])(\d{3})(\d{4}) # 011x [seven-digit local number]
- |
- 0*(1[2-9]1)(\d{3})(\d{4}) # 01x1 [seven-digit local number]
- |
- 0*(1[2-9][0|2-9]\d)(\d{5,6}) # 01xxx [mostly six-digit local numbers] (but not 01x1 codes)
- $/x';
- }
- function gb_validate_number($number, $ext = '', &$error) {
-
- $number = cck_phone_clean_number($number);
- if (preg_match(_uk_phone_rules(), $number)) {
- return TRUE;
- }
-
- $error = '"%phone_input" is not a valid United Kingdom phone number, it should be a 10 digit number like "99 9999 9999", with optional leading "0"';
- return FALSE;
- }
- function gb_sanitize_number(&$number) {
-
- $number = preg_replace('/^([0]*)/', '', $number);
- }
- function gb_formatter_default($element) {
-
- $phone = '';
- $number = $element['number'];
- if ($number) {
- $cc = cck_phone_countrycodes($element['country_codes']);
- if (preg_match(_uk_phone_rules(), $number, $matches)) {
-
- array_shift($matches);
- $phone = $cc['code'] . ' ' . implode(' ', $matches);
- }
- else {
- $phone = "$cc[code] $number";
- }
- }
- return $phone;
- }
- function gb_formatter_local($element) {
-
- $phone = '';
- $number = $element['number'];
- if ($number) {
- if (preg_match(_uk_phone_rules(), $number, $matches)) {
-
- array_shift($matches);
- $phone = '0' . implode(' ', $matches);
- }
- else {
- $phone = "0$number";
- }
- }
- return $phone;
- }
|