123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * @file
- * CCK Field for Dutch phone numbers.
- */
- function phone_nl_metadata() {
- // These strings are translated using t() on output.
- return array(
- 'error' => '"%value" is not a valid Dutch phone number!<br>Dutch phone numbers should contain only numbers and spaces and - and be like 099-9999999 with an optional prefix of "+31".',
- );
- }
- /**
- * Verifies that $phonenumber is a valid ten-digit Dutch phone number with spaces and -
- *
- * Regular expression adapted from Nico Lubbers's regex at RegExLib.com
- *
- * @param string $phonenumber
- * @return boolean Returns boolean FALSE if the phone number is not valid.
- */
- function valid_nl_phone_number($phonenumber) {
- //$phonenumber = trim($phonenumber);
- /*
- Accepts:
- 06-12345678
- 06 123 456 78
- 010-1234567
- 020 123 4567
- 0221-123456
- 0221 123 456
- Rejects:
- 05-12345678
- 123-4567890
- 123 456 7890
- */
- // define regular expression
- $regex = '/
- ([0]{1}[6]{1}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){7}) # Mobile phonenumber
- |
- ([0]{1}[1-9]{1}[0-9]{2}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){5}) # Phonenumber with 4 digit area code
- |
- ([0]{1}[1-9]{1}[0-9]{1}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){6}) # Phonenumber with 3 digit area code
- /x';
- // return true if valid, false otherwise
- return (bool) preg_match($regex, $phonenumber);
- }
- /**
- * Formatting for Dutch Phone Numbers into standard area-phonenumber or with extra country code +31 international format
- *
- * @param string $phonenumber
- * @return string Returns a string containting the phone number with some formatting.
- */
- function format_nl_phone_number($phonenumber, $field) {
- $areacode = $localnumber = '';
- // Mobile number
- if (preg_match('/([0]{1}[6]{1}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){7})/', $phonenumber)) {
- preg_match('/([0]{1}[6]{1})[-\s]+([1-9]{1}[\s]*([0-9]{1}[\s]*){7})/', $phonenumber, $matches);
- }
- // Phonenumber with 4 digit area code
- if (preg_match('/([0]{1}[1-9]{1}[0-9]{2}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){5})/', $phonenumber)) {
- preg_match('/([0]{1}[1-9]{1}[0-9]{2})[-\s]+([1-9]{1}[\s]*([0-9]{1}[\s]*){5})/', $phonenumber, $matches);
- }
- // Phonenumber with 3 digit area code
- if (preg_match('/([0]{1}[1-9]{1}[0-9]{1}[-\s]+[1-9]{1}[\s]*([0-9]{1}[\s]*){6})/', $phonenumber)) {
- preg_match('/([0]{1}[1-9]{1}[0-9]{1})[-\s]+([1-9]{1}[\s]*([0-9]{1}[\s]*){6})/', $phonenumber, $matches);
- }
- $areacode = $matches[1];
- $localnumber = preg_replace('/ /', '', $matches[2]);
- $phonenumber = $areacode. '-'. $localnumber;
- // Add Country code if needed
- if ($field['phone_country_code']) {
- $areacode = preg_replace('/^0/', '', $areacode);
- $phonenumber = '+31-'. $areacode. '-'. $localnumber;
- }
- return $phonenumber;
- }
|