Toon posts:

[php] verschillende formaten 06 naar 1 formaat

Pagina: 1
Acties:
  • 53 views sinds 30-01-2008

Verwijderd

Topicstarter
hoi,

ik heb dus een scriptje gemaakt in php, dat wat info fetcht en daar een 06 nummer uit moet halen.

1 probleem, het 06 nummer staat in meerder formaten zoals 0031612345678, +31612345678, 31612345678 en gewoon 0612345678 (het nummer is natuurlijk elke keer anders)

hoe kan ik zorgen dat ie al deze formaten converteert naar 0612345678?????
met een regexje ofzow?
help!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Als er alleen die 4 mogenlijkheden zijn, lijkt me dat toch niet zo moeilijk? Gewoon met enkele if-statements waarmee je de eerste 2-4 karakters controleerd?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
ja maar ik krijg een bericht terug bijvoorbeeld:

afzender: +31612345678

dit is een test

maar ik krijg het nr daar niet goed uitgefilterd omdat ie de ene keer langer is dan de andere keer

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

kan je niet (net als diverse credit card proggies) eerst alle grote getallen eruit filteren en die dan vergelijken?

Verwijderd

je kan ook gewoon de laatste 9 getallen er uit halen en er een 0 voor zetten...

(of 8 en er dan 06 voor zetten)

Verwijderd

Topicstarter
ik kijk nu tijdens de loopd ie door de regels gaat of de regel "afzender:" bevat
dan replace ik "afzender: " met "" dan trim ik hem en dan heb ik het nummer, dan neem ik de laatste 8 getallen en zet er 06 voor.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Als de enigste variatie is die je kunt krijgen de 00316..., +316... of 06... nummers zijn werkt dat idd prima. Je zou ook +31, 31, en 0031 (aan het begin) kunnen laten vervangen door een 0, dan ben je er ook.

Exact expert nodig?


Verwijderd

Topicstarter
PHP:
1
2
3
4
if(preg_match ("/afzender:/i", $line)) {
    $nr = substr($line, -9, 8);
    $nr = "06" . $nr;
}

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

je kan het ook met een preg_match doen:
PHP:
1
preg_match('/((00316|06|\+316)([0-9]{8}))/si',$mailtjuh,$matches);


"ofzo"

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
chem wat doet jouw code?
(om te testen moet ik namelijk steeds een nieuw smsje sturen en dan kost centjes en die heb ik niet zoveel ;) )

de code die ik eergaf werkt natuurlijk niet, omdat 0612345678 korter is dan 0031612345678

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 29 september 2002 @ 19:30:
chem wat doet jouw code?
(om te testen moet ik namelijk steeds een nieuw smsje sturen en dan kost centjes en die heb ik niet zoveel ;) )

de code die ik eergaf werkt natuurlijk niet, omdat 0612345678 korter is dan 0031612345678
je kan het toch ook in een test opstelling doen :?

Verwijderd

Topicstarter
jah maar dat werkt niet zo goed, omdat ik met verschillende factoren zit die ik dan niet kan testen.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 29 september 2002 @ 19:37:
jah maar dat werkt niet zo goed, omdat ik met verschillende factoren zit die ik dan niet kan testen.
hoezo?

Verwijderd

Topicstarter
laten we aub ontopic blijven

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ik zit ontopic, want er is niets wat je niet kan testen! maargoed ik zal niet meer proberen te helpen dan... :/

Verwijderd

Topicstarter
NOFI,
ik waardeer je hulp maar sommige dingen kun je gewoon niet testen maar daar gaat het even niet om.

  • Neman
  • Registratie: September 2000
  • Laatst online: 30-08 12:47

Neman

Een uit de lucht gegrepen naam

Je kunt toch gewoon 4 regexes maken? Lees eens wat tutorials over regexes of zo, je kunt ze niet eeuwig door anderen laten schrijven...

Verwijderd

Topicstarter
voor tuts lezen heb ik nu geen tijd ik barst van het huiswerk en ik moest ook nog men ouders helpen enzow

morgen, maar kan iemand me aub vertellen wat die regex van chem doet?

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 28-08 15:56

Wally-S

-Snowboarding is art-

Verwijderd schreef op 29 september 2002 @ 20:05:
voor tuts lezen heb ik nu geen tijd
Sorry hoor, maar jij denkt dat je zo nog geholpen wordt :?

Snow is only frozen water


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
chem schreef op 29 september 2002 @ 17:36:
je kan het ook met een preg_match doen:
PHP:
1
preg_match('/((00316|06|\+316)([0-9]{8}))/si',$mailtjuh,$matches);


"ofzo"
ok. ik ben niet zo goed in regexen, maar volgensmij:
(00316|06|\+316)
Zoek een getal dat begint met 00316 of 06 of +316
([0-9]{8})
Filter vervolgens de volgende acht CIJFERS eruit.
Als er dus geen 8 cijfers volgen gebeurt er ook niets

maar.

Probeer het eens op een willekeurige string ($mailtjuh) en doe dan eens print_r($matches).

Dit is trouwens basis-regex (hint: lees wat tutorials
hint2: de meeste mensen willen je liever niet helpen als je zo reageert, probeer het anders te bewoorden
)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

toch maar tuts lezen en iets beter reageren op behulpzame users
zij proberen jou te helpen dus hun zo behandelen levert alleen jezelf maar problemen op....

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.