123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- //drived from au module and manipulated by Moshe Beeri, email: moshe.beeri (at-shetrudel) google mail
- /**
- * @file
- * CCK Field for Isreali phone numbers.
- */
- function phone_il_metadata() {
- return array(
- 'error' => '"%value" is not a valid Israeli phone number',
- );
- }
- /**
- * Verification for Israel Phone Numbers.
- *
- * @param string $phonenumber
- * @return boolean Returns boolean FALSE if the phone number is not valid.
- */
- function valid_il_phone_number($phonenumber) {
- //$phonenumber = trim($phonenumber);
- // strip formatting chars
- $phonenumber = preg_replace('/[\-() ]/', '', $phonenumber);
- // strip optional '+972' or '0' prefixes
- $phonenumber = preg_replace('/^(\+972)/', '', $phonenumber);
- //$rules[] = array("Prefix","Minimum length","Maximum length");
- //http://he.wikipedia.org/wiki/%D7%A7%D7%99%D7%93%D7%95%D7%9E%D7%AA_%D7%98%D7%9C%D7%A4%D7%95%D7%9F
- $rules[] = array("02", 7, 10);
- $rules[] = array("03", 7, 10);
- $rules[] = array("04", 7, 10);
- $rules[] = array("08", 7, 10);
- $rules[] = array("09", 7, 10);
- $rules[] = array("072", 7, 10);
- $rules[] = array("073", 7, 10);
- $rules[] = array("074", 7, 10);
- $rules[] = array("076", 7, 10);
- $rules[] = array("077", 7, 10);
- $rules[] = array("078", 7, 10);
- $rules[] = array("050", 7, 10);
- $rules[] = array("052", 7, 10);
- $rules[] = array("054", 7, 10);
- $rules[] = array("057", 7, 10);
- $rules[] = array("1800", 6, 10);
- $rules[] = array("1801", 6, 10);
- $rules[] = array("1700", 6, 10);
- foreach ($rules as $rule) {
- if (preg_match('/^'.$rule[0].'/', $phonenumber) && strlen($phonenumber) >= $rule[1] && strlen($phonenumber) <= $rule[2]) {
- return TRUE;
- }
- }
- return FALSE;
- }
- /**
- * Formatting for Israeli Phone Numbers. Based upon ITU-T E.123 (but let's not get too crazy)
- *
- * @param string $phonenumber
- * @return string Returns a string containing the phone number with some formatting.
- */
- function format_il_phone_number($phonenumber) {
- $prefix = '';
- $extension = '';
- // strip old formatting chars
- $phonenumber = preg_replace('/[\-() ]/', '', $phonenumber);
- /*
- * strip and save the +9726 prefix if found
- */
- if (preg_match('/^\+972/', $phonenumber, $match)) {
- $prefix = '+972 ';
- $phonenumber = str_replace('+972', '', $phonenumber);
- }
- /*
- * 9 phones digit numbers
- * Eg. 03 9999 999
- */
- if (preg_match('/^([0-9]{2})([0-9]{4})([0-9]{3})$/', $phonenumber, $match)) {
- return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
- }
- /*
- * 10 digit numbers
- * Eg. 1800 999 999
- */
- if (preg_match('/^([0-9]{4})([0-9]{3})([0-9]{3})$/', $phonenumber, $match)) {
- return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
- }
-
- /*
- * cell phone
- * Eg. 054 9999 999
- */
- if (preg_match('/^([0-9]{3})([0-9]{4})([0-9]{3})$/', $phonenumber, $match)) {
- return $prefix . $match[1] . ' ' . $match[2] . ' ' . $match[3] . $extension;
- }
- // default
- return $prefix . $phonenumber . $extension;
- }
|