Herschrijven van een gsm nummer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Brecht S

Brecht S

19/12/2014 23:03:25
Quote Anchor link
Ik heb in mijn database gsmnummers zitten die ik wil herschrijven in een bepaald formaat:

Vb: 0475112233 moet herschreven worden naar 32475112233
Vb: 0475 11 22 33 moet herschreven worden naar 32475112233

Ik weet dat er daar php functies voor bestaan maar weet niet goed hoe ik dit moet aanpakken.
In het tweede voorbeeld moeten de spacies er uit + de 32 ervoor en in het eerste voorbeeld dus enkel de 32. Het scriptje moet op beide gevallen voorbereid zijn.
 
PHP hulp

PHP hulp

21/11/2024 22:27:02
 
Pipo Clown

Pipo Clown

19/12/2014 23:12:48
Quote Anchor link
Kun je wat code laten zien van wat je elf al geprobeerd hebt ?

Waar loop je daar precies vast ?

Krijg je foutmeldingen ?

Welke ?
 
Brecht S

Brecht S

19/12/2014 23:15:35
Quote Anchor link
Wat ik tot nu toe heb gevonden is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$test = '0475 12 23 34';
$test2 = preg_replace('/\s+/', '', $test);
echo $test2;

Dit schijnt mijn whitespaces al te verwijderen en dat werkt. Maar hoe ik nu die eerste 0 kan vervangen door 32 weet ik helemaal niet.
Gewijzigd op 19/12/2014 23:31:36 door Brecht S
 
- SanThe -

- SanThe -

19/12/2014 23:24:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '0475 11 22 33';
echo preg_replace('/ /', '', preg_replace('/^0/', '32', $var));
?>
 
Ivo P

Ivo P

19/12/2014 23:26:32
Quote Anchor link
Ik denk dat de functies str_replace() en substr() wel nuttig zijn

http://php.net/str-replace

Toevoeging op 19/12/2014 23:31:37:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '0475 11 22 33';
echo '32'. substr(str_replace(' ', '', $var),1);
?>


Mits nummer inderdaad altijd met 0 begint
Gewijzigd op 19/12/2014 23:28:07 door Ivo P
 
Brecht S

Brecht S

19/12/2014 23:34:56
Quote Anchor link
De oplossing van SanThe lijkt perfect te werken (maar heb hier wel even de \s+ toegevoegd bij de eerste preg_replace), maar ik ga eens al mijn nummers controleren of die allemaal met een 0 beginnen. Ben daar eigenlijk niet zeker van. Die info komt uit forms en mensen vullen soms de meest rare dingen in...
Gewijzigd op 19/12/2014 23:36:44 door Brecht S
 
- SanThe -

- SanThe -

19/12/2014 23:36:38
Quote Anchor link
Zonder die nul werkt ie ook.
 
Brecht S

Brecht S

19/12/2014 23:37:12
Quote Anchor link
Zolang het maar 1 cijfer is waarschijnlijk?

@SanThe: Ik heb geprobeerd maar als ik het eerste cijfer door een 1 vervang ipv een 0 werkt het wel niet meer. Dus weet niet goed wat je bedoeld?
Gewijzigd op 19/12/2014 23:39:00 door Brecht S
 
- SanThe -

- SanThe -

19/12/2014 23:39:21
Quote Anchor link
Probeer alle varianten gewoon even uit.
 
Brecht S

Brecht S

19/12/2014 23:54:26
Quote Anchor link
Als ik deze gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '0475 / 11.22.33';
echo '32'. substr(str_replace(' ', '', $var),1);
?>

Dan zouden de / en . ook nog weg moeten en uiteraard de whitespaces. Als ik de code van SanThe gebruik kan ik denk ik niet direct / en . verwijderen. Heb ik daar geen str replace voor nodig?
 
- SanThe -

- SanThe -

20/12/2014 00:05:47
Quote Anchor link
Ik denk dat deze beter is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '0475-11.22.33';
echo '32'.preg_replace('/^0|^32|[^0-9]/', '', $var);
?>
Gewijzigd op 20/12/2014 00:06:09 door - SanThe -
 
- Ariën  -
Beheerder

- Ariën -

20/12/2014 00:11:30
Quote Anchor link
Ik zie dat je ook dit topic hebt geopend bij het buurforum:
http://www.pfz.nl/forum/topic/11021-herschrijven-van-gsm-nummers/

Misschien wel handig om het in het vervolg even te melden. Dan kunnen we dat topic ook even in de gaten houden en weten we ook wat daar aan adviezen worden gegeven.
 
Brecht S

Brecht S

20/12/2014 00:12:25
Quote Anchor link
Dit is inderdaad beter. Is er ook een mogelijkheid om mensen die dit gebruiken: 0032 497 72 87 38 ook goed te krijgen? De 0032 zou er uit moeten en vervangen worden door 32.

Toevoeging op 20/12/2014 00:14:02:

@Aar: zal ik in het vervolg meedelen. Geen probleem. Ik wou gewoon alle opties en reacties openhouden en vanalles uitproberen wat mensen mij aanraden.
 
Pipo Clown

Pipo Clown

20/12/2014 00:33:51
Quote Anchor link
Een telefoonnummer heeft in Nederland altijd 10 cijfers.

Het meest logische is dus om eerst de spaties en andere ongeldige tekens er uit te filteren om vervolgens de rechtse 9 cijfers te nemen en daar het voorloopdeel (internationaal) voor te plakken.

In dat geval gaat het ook goed bij nummers welke met 0032 beginnen.

Ik realiseer mij nu dat dit Belgische telefoonnummer zijn, ik weet niet of daar ook alle nummers 10-cijferig zijn.
 
- SanThe -

- SanThe -

20/12/2014 00:35:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$var
= '0475-11.22.33';
echo '32'.preg_replace('/^0032|^0|^32|[^0-9]/', '', $var);
?>
 
Brecht S

Brecht S

20/12/2014 01:03:23
Quote Anchor link
De ene keer is het 0032 en de andere keer gewoon een 0. Kunnen we die check misschien eerst ergens inbouwen en dan de juiste preg_replace nemen? Beiden kunnen niet door elkaar gebruikt worden met dezelfde preg_replace vermoed ik.

Inderdaad zijn belgische gsmnummers ook steeds 10 cijfers en beginnen altijd met een nul als je de landcode er niet voorzet. Anderzijds vervalt de 0 als je de landcode wel voorzet bvb 0475 34 43 23 of 0032 475 11 22 33 ofwel 0032 475 11 22 33. Dit even ter verduidelijk voor pipo clown.
 
Ivo P

Ivo P

20/12/2014 09:32:01
Quote Anchor link
Je wilt dus
- alle niet cijfers eruit
- als met 0 begint, maar niet met 00: 0 eraf en er 32 voor zetten
- laten beginnen met +

Daarmee zou je ook andere dan belgische nummers kunnen verwerken.

Dit geldt trouwens voor alle telefonnummers, niet alleen gsm
 
Brecht S

Brecht S

20/12/2014 09:53:30
Quote Anchor link
Niet helemaal juist.

- alle niet cijfers er uit inclusief whitespaces
- als het begint met 0 dan 32 van maken
- als het begint met 0032 dan 32 van maken
- als het begint met +32 dan de + weglaten

Het normale gsm nummer formaat in België is altijd zoals 0475 11 22 33
 
Pipo Clown

Pipo Clown

20/12/2014 14:34:55
Quote Anchor link
Onderstaande code werkt eigenlijk altijd, wat men ook voor onzin ingetoetst heeft voor het eigenlijke nummer :

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
<?php
$dbnumber
= 'BE + 00 31 4 3456 123 9';

//    Eerst gaan we alle ongeldige karakters er uit halen, we willeen alleen getallen.
$clean = preg_replace( '/[^0-9]/', '', $dbnumber );
//    ($clean = '0031434561239')  De BE en de plus zijn dus al verwijdert nu.

//    We gaan de lengte van de string bepalen (13)
//    Zou er slecht één nul staan dan wordt de lengte uiteraard 12, bij geen nul 11.

$lengte = strlen($clean);

//    Het eerste karakter waar het eigenlijke nummer begint.
//    Deze code is zo flexibel dat dit altijd de 4 zal zijn, het 4e, 3e of 2e karakter van links.

$start = $lengte - 9;


//    We gaan de meest rechtse 9 cijfers bepalen (434561239)
$nettonr = substr($clean, $start, 9);    //    De 9 is de lengte van het nummer.

$resultaat = '32'.$nettonr;        //    (32434561239)
?>


Toevoeging op 20/12/2014 14:44:13:

Ivo P op 20/12/2014 09:32:01:
Daarmee zou je ook andere dan belgische nummers kunnen verwerken.

Dit geldt trouwens voor alle telefonnummers, niet alleen gsm


Door er 32 voor te zetten maak je juist van ieder nummer een Belgisch nummer, zelfs al zou het een Italiaans nummer zijn.
Gewijzigd op 20/12/2014 14:37:09 door Pipo Clown
 
Brecht S

Brecht S

20/12/2014 15:23:23
Quote Anchor link
Ga ik straks eens uittesten en je laten weten. Nu eventjes niet in de mogelijkheid daarvoor.
 
Ivo P

Ivo P

20/12/2014 17:37:49
Quote Anchor link
maar is het 100% zeker dat het altijd een belgisch (mobiel) nummer is?

Wat als iemand een Nederlands nummer ingevoerd heeft?

Want bovenstaande code zet effectief gewoon 32 voor de laatste (hooguit) 9 cijfers van het ingevoerde nummer.

Ook als daar +49211570 stond,
of als er +31612345678 stond.

Enige controle op "staat er al een landnummer?" zou wel lief zijn naar je gebruikers toe.
 

Pagina: 1 2 volgende »



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.