PHP string (btwnummer) opsplitsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johnny Cash

Johnny Cash

27/10/2014 15:27:07
Quote Anchor link
Hallo,

Ik heb al meerdere functies geprobeerd, zoals: explode(), substr(), str_split() en meer van dit soort functies maar ik krijg niet het resultaat wat ik wens.

Ik heb een NL btwnummer op geslagen in de database. Deze staat er als volgt in: NL123456789B08

Ik wil dit gegeven uit de database halen en vervolgens opsplitsen.
Ik wil namelijk een bewerking uitvoeren op de reeks van 9 cijfers (dus tussen NL en B) en ik wil een bewerking kunnen uitvoeren op de 2 cijfers die na de letter B komen.

Wil dus vanuit de string $getbtwnumber = "NL123456789B08" het volgende resultaat krijgen:
$getbtwa = "123456789";
$getbtwb = "08";
 
PHP hulp

PHP hulp

27/04/2024 06:38:17
 

27/10/2014 15:33:12
Quote Anchor link
Je kan met regex de tekens tussen de NL en B eruit vissen.
Helaas weet ik niet wat de regex code is.

Hier staat meer;
http://www.pfz.nl/wiki/invoer-validatie/#Geldig_BTW.2FVAT_nummer
Gewijzigd op 27/10/2014 15:41:58 door
 
Randy vsf

Randy vsf

27/10/2014 15:52:29
Quote Anchor link
Heb laatst hetzelfde probleem gehad.
en dit met substr() opgelost.

http://php.net/manual/en/function.substr.php
 
Johnny Cash

Johnny Cash

27/10/2014 16:07:22
Quote Anchor link
Bedankt voor jullie reacties.

@Randy: op deze pagina ben ik ook geweest en heb ook de substr() functie geprobeerd, maar daar wordt het volgens mij niet erg netjes van... Kun je me laten zien hoe jij het stukje script hebt opgebouwd om alleen de twee gewenste reeksen over te houden?

Ben benieuwd.
 
Randy vsf

Randy vsf

27/10/2014 16:23:12
Quote Anchor link
Hallo johnny,

hier een voorbeeld.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$getbtwnumber
= "NL123456789B08";
$getbtwa = substr($getbtwnumber, 2, 9);
$getbtwb = substr($getbtwnumber, -2);

echo $getbtwa;
echo $getbtwb;

?>
 
Johnny Cash

Johnny Cash

27/10/2014 17:38:04
Quote Anchor link
Hallo Randy,

Nou inderdaad soms kan het zo simpel zijn.!
Ik krijg nu het gewenste resultaat. Hartstikke bedank.
 
Eddy E

Eddy E

27/10/2014 21:23:21
Quote Anchor link
Het BTW-nummer is inmiddels redelijk Europese-eenheidsworst-opgebouwd:

Landcode, 2 hoofdletters, ISO-code.
Burger-service-nummer van oprichter, 9 cijfers (oftewel: je sofi-nummer)
De letter B, van BTW
Twee cijfers, opeenlopende nummering van bedrijven bijbehorend bij je BSN.

Dus mijn bedrijf is:
NL 181300539 B 01

Wat dus ook kan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function ontcijfer_btw_nummer($string)
 {

 $gegevens[] = substr($string, 0, 2);
 $gegevens[] = substr($string, 2, 9);
 $gegevens[] = substr($string, 12, 2);
 return $gegevens;
 }


list($landcode, $bsn_nummer, $bedrijfsid) = ontcijfer_btw_nummer('NL181300539B01');
echo "In $landcode is meneer #$bsn_nummer begonnen aan bedrijf #$bedrijfsid.";
?>


Niet dat het korter, sneller of makkelijker is, maar ik wilde wel iets PHP toevoegen aan de opbouw van een BTW-nummer.
 
Ivo P

Ivo P

28/10/2014 09:31:46
Quote Anchor link
@Eddy:
niet zo met je bsn strooien. Niet voor niets wordt altijd gewaarschuwd om niet overal je ID te laten kopieren: en als je dat doet, je bsn af te dekken.

Met een regex zou het kunnen, maar aangezien de opbouw altijd gelijk is, is het gebruik van substr() sneller.

Toevoeging op 28/10/2014 09:34:14:

Het heeft trouwens niet zo veel zin om NL uit de string te vissen: de btw-nummers hebben per land een andere opbouw.

https://www.btw-nummer-controle.nl/Userfiles/images/Format%20btw-nummers%20EU(4).pdf
 
Peter K

Peter K

28/10/2014 09:42:49
Quote Anchor link
De PHP Explode functie zou je ook nog kunnen gebruiken: http://php.net/manual/en/function.explode.php
 
Ivo P

Ivo P

28/10/2014 09:46:35
Quote Anchor link
waar zou je op willen explode-n?

Aangenomen dat het om steeds een Nederlands btwnummer gaat, is 2 x substr() veruit het eenvoudigst.
 
Tim S

Tim S

28/10/2014 09:56:33
Quote Anchor link
Een oplossing met een regex zou deze kunnen zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if(preg_match_all("/^[A-Z]+([0-9]+)[A-Z]+([0-9]*)$/", $getbtwnumber, $outputArray))
{
  $getbtwa = $outputArray[1];
  $getbtwb = $outputArray[2];
}
 
Willem vp

Willem vp

28/10/2014 09:58:14
Quote Anchor link
> niet zo met je bsn strooien. Niet voor niets wordt altijd gewaarschuwd om niet overal je ID te laten kopieren

[off-topic]
Daarom vind ik het ook zo grappig dat je als bedrijf/zzp'er verplicht bent je BTW-nummer te vermelden in zo ongeveer elke communicatie met de buitenwered. Op zich niets mis mee, ware het niet dat dat BTW-nummer praktisch hetzelfde is als het BSN dat je juist zoveel mogelijk uit de openbaarheid moet zien te houden...
[/off-topic]
Gewijzigd op 28/10/2014 09:59:34 door Willem vp
 
Ivo P

Ivo P

28/10/2014 10:10:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match('#^NL(\d{9})B(\d{2})$#', $btwnummer, $output);
?>


Je weet dan de 2 letters NL zijn, en de letter voor de laatste 2 cijfers is een B.

Staat er een ander land genoemd, dan is de opbouw anders. Bijv. Oostenrijk: ATU123456789
Waarbij de U vast voor Umsatz staat.


kijken of phphulp de link nu wel snapt:
https://www.btw-nummer-controle.nl/Userfiles/images/Format%20btw-nummers%20EU.pdf

Toevoeging op 28/10/2014 10:13:20:

Overigens geldt de overeenkomst tussen BSN en btwnummer alleen voor eenmanszaken, maar niet voor BV's

Zie ook http://www.pfz.nl/wiki/invoer-validatie/#regular-expressions-geldig-btwvat-nummer voor controle of het nummer geldig zou kúnnen zijn.
 



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.