lengte telefoonnummer

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.260
Hallo

In onderstaande wordt email en telefoonnummer vervangen.
Maar ook een nummer als bij. 50 (wat niet gewenst is)
iemand de oplossing , waarschijnlijk moet er nog een lengte bij nummer worden opgegeven.

PHP:
$patterns = array();
// Mail
$patterns[0] = '/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/';
// nummer 10 cijfers
$patterns[1] = '/([0-9]+[\- ]?[0-9]+)/';

$replacements = array();
$replacements[0] = '...Number move...';
$replacements[1] = '...E-mail move...';
$MESSAGE = preg_replace($patterns, $replacements, $MESSAGE);
 
Test met simpele regex. Later kan je die altijd nog "intelligent" maken.
Code:
// naam@example.nl
$patterns[0] = '/(.+)@(.+){2,}\.(.+){2,}/';
// 012-3456789 of 0123-456789
$patterns[1] = '/([0-9]+){3,4}\-([0-9]+){6,7}/';

Meer uitgebreide regex voor NL validatie
 
Laatst bewerkt:
Beste Bron,

Bedankt .
Iets als 012-3456789 heb ik nog niet gecontroleerd,maar op 06... nummer werkt het niet
 
dan is volgend $patterns[1] = '/([0-9]+){2,3,4}\-([0-9]+){6,7}/';

maar dan moet je ook ([\- ]{1})?

onderstaande kan fouten bevatten
dan is volgend $patterns[1] = '/([0-9]+){2,3,4}([\- ]{1})?(([0-9]+){6,7}|([0-9]{2}([\- ]{1})?){3})/';het zou zoiets moeten zijn
voor 06-123456 te laten werken
maar ook 06 12 34 56

verder kan je die ook in je html invoegen via onderstaande ...

Code:
<div class="form-group">
    <label class="control-label col-lg-4 col-md-4 col-sm-4" for="phone" >%phone%:</label>
    <input type="text" class="input-sm col-sm-4 text-right" name="phone" value="%phone->value%" pattern="[0-9+]([0-9./ ]{7,})" required>
    <span class="input_info">%input_info.required%:%input_info.phone%</span>
</div>

/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< validation styles HTML5 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/	
input:required, textarea:required {padding-right: 32px;
	background: #fff url(./img/icons/r/red_asterisk.svg) no-repeat 98% center;
}
input:required:valid, textarea:required:valid {padding-right: 32px;
	background: #fff url(./img/icons/v/valid.svg) no-repeat 98% center;
	box-shadow: 0 0 5px #5cd053;
	border-color: #28921f;
}
input:focus:invalid, textarea:focus:invalid {padding-right: 32px;
	background: #fff url(./img/icons/i/invalid.svg) no-repeat 98% center;
	box-shadow: 0 0 5px #d45252;
	border-color: #b03535
}
input:invalid:after, textarea:invalid:after {padding-right: 32px;
	background: #fff url(./img/icons/i/invalid.svg) no-repeat 98% center;
	box-shadow: 0 0 5px #d45252;
	border-color: #b03535
}
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< validation info>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/	
.input_info {
	background: #584E45;
	border-radius: 3px 3px 3px 3px;
	color: white;
	margin-left:8px;
	padding:  6px;
	z-index: 999;
	position: absolute; 
	display: none;
}
.input_info::before {
	content: "\25C0";
	position: absolute;
	top:1px;
	left:-6px;
    color:#584E45;/*equals .input_info background: look like speakcorner */
}
input:focus + .input_info {display: inline;}
input:required:valid + .input_info {background: #28921f;}
input:required:valid + .input_info::before {color:#00FFFF;}
 
Bedankt, met de CSS kan ik in mijn geval niet veel en nog steeds een 06 nummer
 
@Frenske123
Oops, de 06'jes vergeten. Het wordt dan
Code:
// naam@example.nl
$patterns[0] = '/(.+)@(.+){2,}\.(.+){2,}/';
// 06-12345678 of 012-1234567 of 0123-123456
$patterns[1] = '/[0][1-9][0-9]{0,2}\-[1-9][0-9]{5}[0-9]{0,2}/';
Maar nogmaals, een goede validatie is een lange regex.

**
iets aangepast zodat 1e cijfer kengetal altijd 0 moet zijn en 1e cijfer abonneenummer nooit 0 mag zijn.
 
Laatst bewerkt:
Bedankt maar vaak wordt geen - gebruikt in 06 nummer en dan werkt het niet.
 
Aangepast, streepje of spatie zijn nu optioneel.
Code:
$patterns[1] = '/[0][0-9]{1,3}([\-|\s])?[0-9]{6,8}/';
 
Laatst bewerkt:
Ik weet niet of je een telef.nr wilt valideren (bijvoorbeeld van een formulier) of dat je telef.nr's in een grote tekst wilt vervangen. Als het om validatie van een telef.nr gaat dan kan je meer variaties op deze manier afvangen
Code:
$strTel = '+31 (0)6 - 1234 5678';
$intTel = intval( preg_replace('/(\+31|[\-\s\(\)])/', '', $strTel) );
if ($intTel >= 101000000 && $intTel <= 999999999) echo 'Telefoon: 0' . $intTel;
Weergegeven wordt telef.nr 0612345678.
Het is een 9-cijferig getal. De voorloopnul zet je erbij als je het telef.nr gaat gebruiken.
Als je veel telef.nr's hebt dan werkt een getal sneller met sorteren en zoeken.
 
Laatst bewerkt:
Het gaat om tel nummers/ email account geplaatst in text via form
 
Laatst bewerkt:
Niet dat ik (programmeer-)technisch kan helpen, maar bedenk wel dat er ook NL telefoonnummers zijn die minder dan 10 posities zijn, denk aan 0900 en 0800 nummers en evt. ook langere (=doorkiesnummers).
Ook wordt niet gesproken over telefoonnummers met landencode erbij, zoals 0031612345678 of +31612345678
De startposting zegt niets over dergelijke telefoonnummers (of die zijn toegestaan etc.)

Tijs.
 
0900 en 0800 nummers en evt. ook langere (=doorkiesnummers).
Verkorte nummers en doorkiesnummers zijn in het nummerplan gewoon 10-cijferig. Stel dat je daarmee naar buiten belt dan geeft nummerherkenning 10 cijfers. Zie Telecom wetgeving & besluitvorming.
Stel dat een bedrijf een 020-123456x abonnement heeft dan krijgt hij 10 nummers. Eentje daarvan kan dat bedrijf als hoofdnummer gebruiken en de andere 9 kunnen als 'doorkiesnummers' worden gebruikt.

Ook wordt niet gesproken over telefoonnummers met landencode erbij, zoals 0031612345678 of +31612345678
0031612345678 wordt niet op getest (geen officiële notatie en per land verschillend). +31612345678 wordt in de code van #10 wel op getest. Als je in alle notaties +31 erbij wilt hebben dan wordt het
if ($intTel >= 101000000 && $intTel <= 999999999) echo 'Telefoon: +31 (0)' . $intTel;
 
Laatst bewerkt:
Deze info als apart berichtje voor de duidelijkheid.
Een streepje op de juiste plek in NL telefoonnummers is prettig voor leesbaarheid.
Code:
function telFormat($intTel) {
   if ($intTel < 101000000 || $intTel > 999999999) return '';
   $strTel = '0' . strval($intTel);
   if (substr($strTel,1,1) == '6') return '06-' . substr($strTel,2);
   $n3 = '10;13;14;15;20;23;24;26;27;30;33;35;36;38;40;43;45;46;50;53;55;58;61;62;63;64;65;66;68,69;70;71;72;73;74;75;76;77;78;79;82;84;85;87;88;91;';
   if (strpos($n3, substr($strTel,1,2)) !== false) return substr($strTel,0,3) . '-' . substr($strTel,3);
   return substr($strTel,0,4) . '-' . substr($strTel,4);
}
$strTel = '+31 (0)6 - 1234 5678';
$intTel = intval( preg_replace('/(\+31|[\-\s\(\)])/', '', $strTel) );
echo telFormat($intTel);
Resultaat
0612345678 wordt 06-12345678
0201234567 wordt 020-1234567
0516123456 wordt 0516-123456
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan