data; } $mobiles = array( "39", "50", "63", "66", "67", "68", "91", "92", "93", "94", "95", "96", "97", "98", "99", ); $landlines = array( "255", "260", "263", "265", "268", "269", "271", "272", "278", "312", "3131", "3132", "3133", "3134", "3135", "3136", "3137", "3141", "3142", "3143", "3144", "3145", "3146", "322", "3230", "3231", "3234", "3236", "3238", "3239", "3241", "3244", "3245", "3247", "3248", "3249", "3251", "3252", "3254", "3255", "3256", "3257", "3259", "32606", "3261", "3263", "3264", "3265", "3266", "3269", "3310", "3322", "3342", "3344", "3346", "3348", "3352", "3355", "3357", "3362", "3363", "3365", "3366", "3368", "3372", "3374", "3376", "3377", "3379", "342", "3430", "3431", "3432", "3433", "3434", "3435", "3436", "3438", "3471", "3472", "3474", "3475", "3476", "3477", "3478", "3479", "352", "3540", "3541", "3542", "3543", "3544", "3546", "3547", "3548", "3549", "3550", "3551", "3552", "3554", "3555", "3557", "3558", "362", "3632", "3633", "3634", "3635", "3636", "3637", "3650", "3651", "3652", "3653", "3654", "3655", "3656", "3657", "3658", "3659", "372", "373", "3740", "3741", "382", "384", "385", "412", "4130", "4132", "4133", "4134", "4135", "4136", "4137", "4138", "4139", "414", "4161", "4162", "4231", "4232", "4241", "432", "4330", "4331", "4332", "4333", "4334", "4335", "4336", "4337", "43388", "4340", "4341", "4342", "4343", "4344", "4345", "4346", "4347", "4348", "4349", "4350", "4351", "4352", "4353", "4355", "4356", "4357", "4358", "44", "462", "4631", "4632", "4633", "4634", "4635", "4636", "4637", "4641", "4642", "4643", "4644", "4645", "4646", "4653", "4654", "4655", "4656", "4657", "4658", "4659", "472", "473", "4740", "4741", "4742", "4744", "4745", "4746", "4747", "4748", "4749", "482", "484", "4851", "4852", "4853", "4854", "4855", "4856", "4857", "4858", "4859", "4860", "4861", "4862", "4863", "4864", "4865", "4866", "4867", "4868", "512", "5131", "5132", "5133", "5134", "5135", "5136", "5151", "5152", "5153", "5154", "5158", "5159", "5161", "5162", "5163", "5167", "5168", "522", "5233", "5234", "5235", "5236", "5237", "5238", "5239", "5240", "5241", "5242", "5250", "5251", "5252", "5253", "5254", "5256", "5257", "5258", "5259", "532", "5340", "5341", "5342", "5343", "5344", "5345", "5346", "5347", "5348", "5350", "5351", "5352", "5353", "5354", "5355", "5356", "5357", "5358", "5359", "536", "5361", "5362", "5363", "5364", "5365", "5366", "542", "5422", "5442", "5443", "5444", "5445", "5446", "5447", "5448", "5449", "5451", "5452", "5453", "5454", "5455", "5456", "5457", "5458", "5459", "552", "553", "5542", "5543", "5544", "5545", "5546", "5547", "5548", "5549", "56", "5610", "5611", "5612", "5615", "5616", "5617", "5618", "562", "5630", "5632", "5633", "5636", "5638", "5639", "564", "5650", "5651", "5652", "5653", "5655", "5656", "5657", "5658", "5662", "5663", "5665", "5667", "5668", "567", "569", "572", "574", "575", "5761", "5762", "5763", "5764", "5765", "5766", "612", "6131", "6132", "6133", "6136", "6137", "6138", "6139", "6140", "6141", "6142", "6143", "6144", "6145", "6147", "6153", "6156", "6162", "6165", "6175", "6178", "619", "6212", "6214", "6217", "622", "6232", "6236", "6237", "6239", "6242", "6243", "6244", "6246", "6247", "6249", "6250", "6252", "6253", "6254", "6255", "6256", "6257", "6259", "6261", "6262", "6264", "6267", "6269", "6272", "6273", "6274", "6275", "6277", "6278", "6279", "629", "642", "6431", "6432", "6433", "6434", "6435", "6436", "6441", "6442", "6443", "6444", "6445", "6446", "6451", "6452", "6453", "6454", "6455", "6456", "6461", "6462", "6463", "6464", "6465", "6466", "6471", "6472", "6473", "6474", "652", "654", "655", "6560", "6561", "6562", "6563", "6564", "6565", "6566", "6569", "692", ); $all_codes = array_merge($mobiles, $landlines); $TOTAL_DIGITS = 9; $ITEMS_PER_LINE = 30; $counter = 0; $line = ''; foreach ($all_codes as $code) { if (++$counter >= $ITEMS_PER_LINE) { $result[] = $line; $counter = 0; $line = ''; } $item = $code . '\d{' . ($TOTAL_DIGITS - strlen($code)) . '}'; $line .= (empty($line) ? '' : '|') . $item; } $result[] = $line; cache_set('phone' . __FUNCTION__, $result); return $result; } function phone_ua_metadata() { // These strings are translated using t() on output. return array( 'error' => '"%value" is not a valid Ukrainian mobile phone number
' . 'Ukrainian phone numbers should only have 10 digits staring with 0 with optional country prefix +38 .
' . 'And, of course, city or mobile code - a first few digits after 0 - have to be valid.', ); } /** * Verifies that $phonenumber is valid * * @param string $phonenumber * @return boolean Returns boolean FALSE if the phone number is not valid. */ function valid_ua_phone_number($phonenumber) { // For adressing Ukraine phones used both +38 and +380 as a prefix. // So lets clean up any spaces, pareenthesis, minus signs etc first. $cleaning_pattern = '/( |\-|\(|\))*/'; $refined_phonenumber = preg_replace($cleaning_pattern, '', $phonenumber); // define regular expression $code_packs = _phone_ua_get_valid_masks(); foreach ($code_packs as $codes) { // $regex = "/^((8|\+38)-?)?\s*(\(?044\)?)?-?\d{3}-?\d{2}-?\d{2}$/i"; // Please note - pure 8 as a prefix is obsolete. $regex = "/^(\+38)?0(" . $codes . ")$/"; if (preg_match($regex, $refined_phonenumber)) { return true; } } // return true if valid, false otherwise return false; } /** * Formatting for Unkraine Phone Numbers. * * @param string $phonenumber * @return string Returns a string containting the phone number with some formatting. */ function format_ua_phone_number($phonenumber, $field) { //$phonenumber = trim($phonenumber); // do some formatting on the phone number /* ==> to be done ==> add the country code if ($field['phone_country_code']) { if ($matches[1] != "+39") { $phonenumber = "+39" . " " . $phonenumber; } } */ return $phonenumber; }