Op zoek naar een goede telefoonnummer check

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roel H

Roel H

23/09/2013 18:29:40
Quote Anchor link
Hallo allemaal,

Ik zoek een telefoonnummer check. Ik heb er 1, maar daarbij ben je verplicht een - in te voeren en dat wil ik echter niet. Weet iemand een goede check die bruikbaar is?

Groet,
Roel
 
PHP hulp

PHP hulp

22/12/2024 10:16:43
 
- Ariën  -
Beheerder

- Ariën -

23/09/2013 18:34:22
Quote Anchor link
Wat houdt je tegen om die die je nu hebt eens te tonen? Een - uit de validatie halen is voor ons vast geen rocket-science ;-)
 
Ward van der Put
Moderator

Ward van der Put

23/09/2013 19:10:10
Quote Anchor link
Ach, zolang ik maar 14 040 kan kiezen voor plaatselijk ongemak...
 
Roel H

Roel H

23/09/2013 19:29:26
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (preg_match ('/^[0-9]{10}$/', $telnummer))


Deze gebruik ik nu... Maar ik wil dat men met en zonder - kan invullen.

Groet,
Roel
 
Obelix Idefix

Obelix Idefix

23/09/2013 19:39:19
Quote Anchor link
En wat als iemand een nummer wil invoeren zoals Ward aangeeft?
Of volgens de internationale notatie (+31)?
Of met haakjes rond het kengetal?
Of met spaties?

Ten aanzien van je vraag: controleer (na het verzenden van het formulier) of er een - in staat. Zo ja; verwijder die voor je gaat controleren met preg_match.
 
Kris Peeters

Kris Peeters

24/09/2013 11:39:01
Quote Anchor link
Kan iemand de regels nog eens opsommen, van hoe een telefoonnummer moet geformatteerd worden?

Je hebt
- zonder land-prefix: 9 of 10 karakters; beginnende met een 0.
- met bv 0032 ... (eerstvolgende 0 wordt weggelaten) 12 of 13 karakters
- met bv. +32 ... (eerstvolgende 0 wordt weggelaten) 11 of 12 karakters

En misschien hebben jullie in Nederland nog extra formaten?

----
Trouwens; ik zou kiezen voor een systeem waarbij alle vreemde tekens gewoon genegeerd worden. Dan kunnen mensen staties; '/', '-' schrijven hoe veel ze willen. Gewoon negeren.
Gewijzigd op 24/09/2013 11:41:45 door Kris Peeters
 
Ward van der Put
Moderator

Ward van der Put

24/09/2013 11:45:44
Quote Anchor link
De officiële Nederlandse notatie gebruikt ronde haakjes rond het netnummer en vanaf rechts een spatie om de twee of drie cijfers:

(010) 123 45 67

(06) 12 34 56 78

Verder kun je ook in Nederland inmiddels naambellen, bij een servicenummer bijvoorbeeld:

0900 KAAS
 
Kris Peeters

Kris Peeters

24/09/2013 12:20:38
Quote Anchor link
Ward van der Put op 24/09/2013 11:45:44:
De officiële Nederlandse notatie gebruikt ronde haakjes rond het netnummer


Dat is een slecht idee.
Nu ja ...

Als ik het goed heb, zijn er tegenwoordig heel erg veel formaten mogelijk.
Probeer daar nog eens het formaat te controleren ...
 
Ward van der Put
Moderator

Ward van der Put

24/09/2013 12:48:26
Quote Anchor link
Een strenge controle voor een Nederlands particulier telefoonnummer is 10 cijfers waarvan het eerste een 0 is. Streepjes, haakjes en spaties kun je daarbij negeren, zolang je maar 10 cijfers hebt.

Begint het nummer met +, dan moet het vervolgens +31 zijn met de landcode voor Nederland gevolgd door 9 cijfers (want de eerste 0 vervalt).

Zoals gezegd, kun je daarmee niet alle nummers afvangen. Vooral zakelijke telefoonnummers wijken af, waaronder 0800- en 0900-servicenummers, 14-nummers voor Nederlandse gemeenten en doorkiesnummers.
 
Kris Peeters

Kris Peeters

24/09/2013 14:20:40
Quote Anchor link
Wel ja; het is zinloos om reg ex'en boven te halen, als men het niet eerst deftig kan uitleggen wat de regels precies zijn.

Dat is zoals je de lens van je sniper rifle al focussen vooraleer je weet wie je moet neerknallen
 
Jan R

Jan R

24/09/2013 16:24:05
Quote Anchor link
Ik sla alles op als nummers;
dan geef ik weer met deze functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

    function format_phone($phone){        
        $kentallen = Array(
        '0909','0906','0900','0842','0800','0676','06','010','046','0111','0475','0113','0478','0114','0481','0115','0485','0117','0486','0118','0487','013','0488','015','0492','0161','0493','0162','0495','0164','0497','0165','0499','0166','050','0167','0511','0168','0512','0172','0513','0174','0514','0180','0515','0181','0516','0182','0517','0183','0518','0184','0519','0186','0521','0187','0522','020','0523','0222','0524','0223','0525','0224','0527','0226','0528','0227','0529','0228','053','0229','0541','023','0543','024','0544','0251','0545','0252','0546','0255','0547','026','0548','0294','055','0297','0561','0299','0562','030','0566','0313','0570','0314','0571','0315','0572','0316','0573','0317','0575','0318','0577','0320','0578','0321','058','033','0591','0341','0592','0342','0593','0343','0594','0344','0595','0345','0596','0346','0597','0347','0598','0348','0599','035','070','036','071','038','072','040','073','0411','074','0412','075','0413','076','0416','077','0418','078','043','079','045','0496','0491','0473','0477','09','02',                                         //nederland
        
            '0486',                                                                                                                                        //telenet
            '0470','0471','0472','0473','0474','0475','0476','0477','0478','0479',        //proximus
            '0483','0484','0485','0486','0487','0488','0489',                                                    //base
            '0490','0491','0492','0493','0494','0495','0496','0497','0498','0499',        //mobistar
            '067', '053', '03', '063', '050', '02', '071', '060', '083', '052', '013', '082', '086', '089', '09', '011', '014', '085', '057', '056', '064', '016', '061', '04', '015', '065', '081', '058', '054', '067', '059', '051', '055', '080', '012', '069', '014', '087', '058', '019', '010', '050',         //Belgie
            '070','077','078','0800','0900','0902','0903','0905','0909'                             //speciale
);

        $phone=preg_replace('/[^0-9]/', '', $phone);
        
        if(substr($phone,0,2)=='00' && substr($phone,2,2)=='31')
            $phone=preg_replace('/^([0-9]{4})/', '0', $phone);
        if(substr($phone,0,2)=='00')
            $phone=preg_replace('/^([0-9]{4})([0-9]+)/', '($1) $2', $phone);
        
        for($i=4;$i>=0;$i--)
        {

            $ken=substr($phone,0,$i);
            if(in_array($ken,$kentallen))
                break;
        }

        if ((strlen ($phone)-$i)==6)
        {

                return preg_replace('/([0-9]{'.$i.'})([0-9]{2})([0-9]{2})([0-9]{2})/', "$1-$2-$3-$4", $phone);
        }

        else
        {
            if ((strlen ($phone)-$i)==7)
            {

                return preg_replace('/([0-9]{'.$i.'})([0-9]{3})([0-9]{2})([0-9]{2})/', "$1-$2-$3-$4", $phone);
            }

            else
            {
                return preg_replace('/([0-9]{'.$i.'})([0-9]+)/', "$1-$2-$3-$4", $phone);
            }
        }
    }

?>


De code komt wel niet van mij. Ik heb ze wel vervolledigd en vraag me niet meer van wie ze komt. vermoedelijk van deze site.

Jan
Gewijzigd op 24/09/2013 16:24:59 door Jan R
 
Kris Peeters

Kris Peeters

24/09/2013 16:33:08
Quote Anchor link
>> if(substr($phone,0,2)=='00' && substr($phone,2,2)=='31')

Enkel Nederlanders welkom?
Zet daar ten minste iets als

if(substr($phone,0,2)=='00' && (substr($phone,2,2)=='31' || substr($phone,2,2)=='32'))

Verder lijkt deze code me wel zinnig.
 
Roel H

Roel H

24/09/2013 17:47:51
Quote Anchor link
Thanks. ik ga kijken wat ik hiermee kan, of het werkt zoals hun willen :)
 
Eddy E

Eddy E

24/09/2013 18:00:34
Quote Anchor link
Gewoon zo voor het internationele systeem:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input naam="telefoonnummer" type="text" pattern="[\+]\d{2}[\(]\d{2}[\)]\d{4}[\-]\d{4}">


Wat je kan doen is alles behalve nummers weghalen (alle spaties, punten, streepjes etc).
Dan vervang je een (eventuele) +31 of 0031 door een 0.
En dan kijken of het met een 0 begint (voor NL dan) gevolgd door 9 cijfers waarbij het tweede cijfer 1-9 moet zijn.

Denk je internationele nummers te krijgen en het nummer begint met een +, vervang dan door 00.
Begint het met 00, niets doen.
Begint het met 0, maak er 0031 van.
Dus dat je altijd een nummer krijgt als 0031184633843 bijvoorbeeld: dat is +31 (0)184-633.843.

Ik doe het zelf zo (alleen voor NL-publiek):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_POST
[$veld] = str_replace(array("+31", "0031", "-", "."), array("0", "0", ""), $_POST[$veld]);
?>
 
Jan R

Jan R

25/09/2013 12:50:15
Quote Anchor link
Kris Peeters op 24/09/2013 16:33:08:
>> if(substr($phone,0,2)=='00' && substr($phone,2,2)=='31')

Enkel Nederlanders welkom?
Zet daar ten minste iets als

if(substr($phone,0,2)=='00' && (substr($phone,2,2)=='31' || substr($phone,2,2)=='32'))

Verder lijkt deze code me wel zinnig.


En ik gebruik ze dan nog voor Belgie en Italie :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.