string_exp voor geldig telefoon nummer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frans Muller

Frans Muller

15/08/2016 11:17:36
Quote Anchor link
Als beginner PHP-er ben ik al trots dat het me gelukt is om een werkend PHP formulier op een website te plaatsen.
De vraag is of de string_exp voor het telefoonnummer aan te vullen is zodat alleen een geldig telefoonnummer geaccepteerd wordt. (dus bestaande uit minimaal 10 cijfers inclusief eventueel een - of + teken )
De string ziet er nu uit als:

$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';

Kan dat dus aangevuld worden? Zo-ja, hoe? Graag advies.
 
PHP hulp

PHP hulp

30/11/2024 20:38:18
 
Thomas van den Heuvel

Thomas van den Heuvel

15/08/2016 14:54:52
Quote Anchor link
Aan hoeveel regels wil je dit onderwerpen?
En zijn al die regels vervolgens dekkend?

Je zou ook kunnen overwegen het "risico" te spreiden door ook een e-mailadres verplicht te stellen met verificatie en/of de gebruiker een ander adres op te laten geven ofzo (oftewel houd meerdere contactgegevens bij).

Zelfs al is het telefoonnummer syntactisch correct kan iemand nog steeds een vals nummer opgeven :p.

Ik zou het in beginsel simpel houden en enkel cijfers accepteren en kijken hoe dat uitpakt. Wellicht kun je dit later nog splitsen in landcode (of landselectie), netnummer en telefoonnummer.
 
Frans Muller

Frans Muller

15/08/2016 15:52:58
Quote Anchor link
Dank Thomas;
Het is voor een website van een kennis die zelf niet in staat is om terug te mailen. Daarom vraagt hij bij reacties om een telefoonnummer zodat hij terug kan bellen. Op die manier kan hij toch zelfstandig -zonder anderen om hulp te hoeven vragen- reageren op een bericht.
Als een mailadres of telefoonnummer vals is dan hoeft hij de navraag ook niet serieus te nemen.
Dus als je ons zou kunnen helpen: er moeten minimaal 10 cijfers ingevuld worden inclusief eventuele spaties met eventueel een -teken of een + teken (bij internationale nummers) Kun je daarbij helpen? Dat zou ik erg waarderen.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/08/2016 17:30:43
Quote Anchor link
Ik weet zo gauw niet of een reguliere expressie specifieke tekens (in dit geval: cijfers) kan tellen in combinatie met andere karakters. Mogelijk moet je dit apart doen.

Maar dan zit je nog steeds een beetje met volgorde en voorkomens van andere karakters (spaties, andere tekens), je hebt dan ook te maken met persoonlijke voorkeur waar je het telefoonnummer opdeelt... je kunt dan geen echte stricte checks uitvoeren tenzij je een scala aan verschijningsvormen kent (die je allemaal apart zult moeten definiëren).

Wat is er op tegen om enkel een telefoonnummer te vragen zonder spaties of speciale karakters? Indien je dan minimaal 10 cijfers wilt gebruik je {10,} in plaats van +, dus zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$string_exp
= '^[0-9]{10,}$';
?>

Zet in de toelichting: "enkel cijfers, geen spaties of speciale karakters" oid als toelichting. Indien een telefoonnummer begint met 316 dan snappen we denk ik wel dat dit een nederlands 06-nummer is? Aan de hand van enkel cijfers kan volgens mij prima afgeleid worden wat het daadwerkelijke telefoonnummer is / zou moeten zijn. Keep it simple.
Gewijzigd op 15/08/2016 17:31:51 door Thomas van den Heuvel
 
Eddy E

Eddy E

16/08/2016 09:23:50
Quote Anchor link
Waarom niet de mensen laten invullen wat ze willen?
Die vriend van jou kan het zelf wel lezen. Voor het opslaan kan je gewoon VARCHAR gebruiken?

Persoonlijk schrijf ik mijn telefoonnummer nog met puntjes ertussen: 0184-633.843
Als iemand +31 (0)184 - 633843 wil typen, moet dat ook kunnen.
Wat je dus, in mijn optiek, moet doen is: gewoon volledig opslaan wat de gebruiker invult.
Je vriend kan het toch wel lezen en opslaan in de database is geen probleem.
Waarom zou je het beperken? Noem eens een goede reden? Controle op juistheid? Een nummer als 123-456-7890 is toch wel in te vullen.
 
Ivo P

Ivo P

16/08/2016 15:07:23
Quote Anchor link
alle tekens die niet een cijfer zijn, kun je met preg_replace eenvoudig verwijderen uit de invoer op het moment dat je gaat controleren.

Je houdt dan 10 of 12 cijfers over (uitgaande van juiste invoer, en zonder varianten als +31 etc)
Dat kun je valideren.

Verder begint het nummer in zo'n geval met een 0.

http://www.pfz.nl/wiki/invoer-validatie/#regular-expressions-is-het-een-nederlands-telefoonnummer

De variant van 12 cijferige NL telefoonnummers is niet bedoeld voor te bellen telefoons. (data only) dus die zou niet voor moeten komen.
Maar het zou ook kunnen dat iemand een Belgisch of Duits nummer wil ingeven. In zo'n geval moet je script niet bokken natuurlijk.
 
- Ariën  -
Beheerder

- Ariën -

16/08/2016 15:25:05
Quote Anchor link
Zelf zou ik de keuze neerleggen of je een gestandaardiseerd formaat gebruikt of juist niet, van het feit of je iets geautomatiseerds met de gegevens doet.

Als het gebruikt wordt om een SMS-bericht te sturen, dan zou ik liever een dropdown menu maken met de landcodes erin, en in het telefoonnummerveld alleen maar cijfers verplichten. Als het puur voor een contactformulier is, dan kan je alles gewoon toestaan. Het is net hoe je het wilt afhandelen.

Of er nu +31 (0)99 - 123 45 67 staat, of 099 - 123 45 67, het is voor iemand die handmatig het nummer draait wel duidelijk dat diegene 0991234567 moet intoetsen, of 0031991234567 als hij/zij in het buitenland zit.
 
Frans Muller

Frans Muller

17/08/2016 09:55:40
Quote Anchor link
Dank Heren; het probleem is dat -vooral engelsen- nogal eens invullen iets als 'B'ham 234567' en dat is erg lastig. Ik denk dat ik het beperk tot een verzoek in de toelichting om alleeen een volledig telefoonnummer in cijfers in te vullen. De rest wordt te ingewikkeld. Nogmaals dank voor het meedenken.
 
Eddy E

Eddy E

17/08/2016 10:24:16
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="tel" name="telefoonnummer">


Vergeet ook niet dat iemand op het bedrijf gebeld wil worden: 0800-1234 moet ook kunnen...
 
Frans Muller

Frans Muller

17/08/2016 11:28:15
Quote Anchor link
Heb als volgt aangevuld:

}
$string_exp = "^[0-9 .-]+$";
if(!mb_ereg($string_exp,$telephone)) {
$error_message .= 'Het telefoonnummer is niet geldig.<br />';
}

// controle lengte telefoonnummer --------------------------------

$tel = strlen($telephone);
if($tel < 10){
$error_message .= 'Het telefoonnummer is niet volledig<br />';
}

// einde controle lengte telefoonnummer --------------------------

Met dank voor uw adviezen en medewerking sluit ik hierbij dit forum topic.
 



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.