webForumDet fria alternativet

Kontrollera org.nr

PHP

10 svar · 5 859 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

Hej alla!

Jag skulle vilja kunna testa ifall olika inmatade organisationsnummer är giltiga (personnummer/enskilda firmor skall inte godkännas). Hittade detta script men det är skrivet i javascript, jag vill gärna ha PHP (känns säkrare).

Någon som vet vart jag kan hitta ett sådant/vill översätta ovanstående till PHP åt mig??

Tack på förhand! :bire

Medlem sedan jan. 20051 130 inlägg
#2

Någon som vet hur jag kan göra? :)

Medlem sedan juni 20001 251 inlägg
Medlem sedan juli 200653 inlägg
#4

stevenet skrev:

http://www.phpcoded.com/?DO=viewCode&ID=17

Med det scriptet du hänvisade till kollar man persnr/orgnr enskilda firmor, precis det Learn inte behövde :)

Medlem sedan jan. 20051 130 inlägg
#5

seattlegrunge skrev:

Med det scriptet du hänvisade till kollar man persnr/orgnr enskilda firmor, precis det Learn inte behövde :)

Precis. Dessutom tycker jag inte det såg så genomtänkt ut...

Någon?

Medlem sedan juli 200012 978 inlägg
#6

Ett Test skall ju i det grundläggande kunna fungera både med och utan bindestreck i sjunde positionen. Så det går väl att använda ett bra personnrtest och komplettera med test av att de två första är 55 att tredej och fjärde är mer än 12 osv. Vilken typ av bolag skall kollas?

Medlem sedan juni 20031 837 inlägg
#7

Här kommer ett förslag för översättning till PHP-kod
Med orginal koden

<?php
function checkOrgNr($nr)
{
    //	this.valid=false;
    $valid = false;

    // 	if(!nr.match(/^(\d{1})(\d{5})\-(\d{4})$/)){ return false; }
    $match = array();
    if(!preg_match("/^(\d{1})(\d{5})\-(\d{4})$/", $nr, $match))
    {
        return false;
    }

	//this.group=RegExp.$1;
	$group = $match[1];

	//this.controldigits=RegExp.$3;
	$controldigits = $match[3];

	//this.alldigits=this.group+RegExp.$2+this.controldigits;
	$alldigits = $group . $match[2] . $controldigits;
	

	//if(this.alldigits.substring(2,3)<2){ return false }
	if(substr($alldigits, 2,1) < 2)
	{
	    return false;
	}
	
	//var nn="";
	$nn = "";
	
	//for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	for($n=0; $n < strlen($alldigits); ++$n)
	{
	    $nn .= (( (($n+1)%2) +1) * substr($alldigits, $n,1));
	}

	//this.checksum=0;
	$checksum = 0;
	
	//for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	for($n=0; $n < strlen($nn); ++$n)
	{
	    $checksum += substr($nn, $n, 1);
	}

	//this.valid=(this.checksum%10==0)?true:false;
	$valid = $checksum % 10 == 0;
	
	return $valid;
}

checkOrgNr('123456-7890');
?>

utan orginal koden

<?php
function checkOrgNr($nr)
{
    $valid = false;
    $match = array();

    if(!preg_match("/^(\d{1})(\d{5})\-(\d{4})$/", $nr, $match))
    {
        return false;
    }

	$group = $match[1];
	$controldigits = $match[3];
	$alldigits = $group . $match[2] . $controldigits;

	if(substr($alldigits, 2,1) < 2)
	{
	    return false;
	}
	
	$nn = "";
	
	for($n=0; $n < strlen($alldigits); ++$n)
	{
	    $nn .= (( (($n+1)%2) +1) * substr($alldigits, $n,1));
	}

	$checksum = 0;
	
	for($n=0; $n < strlen($nn); ++$n)
	{
	    $checksum += substr($nn, $n, 1);
	}

	$valid = $checksum % 10 == 0;
	
	return $valid;
}

checkOrgNr('123456-7890');
?>

Man kan göra om koden lite mer men nu tog jag och översatte den mer eller mindre rakt av.

Medlem sedan jan. 20051 130 inlägg
#8

Lasp: Jag vill kolla aktiebolag, handelsbolag och ekonomiska föreningar.

The_Hulk: Tack! Är detta ett bra script, kan jag lita på att deet fungerar som det ska..? Jag vill ju inte att giltiga ab, hb eller ek blir nekade tillstånd... :)

Medlem sedan dec. 19995 718 inlägg
#9

Från susning.nu Kolla första och tredje siffran.

Organisationsnummer motsvarar personnummer 
för juridiska personer till skillnad från fysiska personer.
De kännetecknas av att den tredje siffran, första siffran
 i "månadsdelen", är större än eller lika med 2. 
Precis som personnummer har organisationsnummer
 en kontrollsiffra i slutet. Den sista siffran kan även 
den räknas ut med hjälp av algoritmen modulo 10. 
Se personnummer för mer info. 

Den första siffran i organisationsnumret anger vilken
 grupp av bolagsformer som den juridiska personen tillhör. 

Inledande siffra Bolagsform 
2 Stat, landsting eller kommun 
5 Aktiebolag 
7 Ekonomisk förening 
8 Stiftelse eller ideell förening 
9 Handelsbolag, kommanditbolag
Medlem sedan jan. 20051 130 inlägg
#10

Ok, och hur ska jag applicera dessa regler i koden? :)

Medlem sedan dec. 19995 718 inlägg
#11

Det har jag ingen aning om :) Ville bara tipsa om vilka nuffror som är vad. :)

146 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)