fiffig funktion :)

PHP kan diskuteras här.

Moderatorer: Nille, Minime

exz
Allsmäktig
Inlägg: 378
Blev medlem: 28 sep 2003 21:03
ORT: Falun

fiffig funktion :)

Inlägg av exz »

medans jag ändå postar kan jag ta en till som jag faktiskt blivit nöjd med. :) jag tror den ska fungera för alla personnummer, kommentera gärna eller rätta mig om det är något knasigt nånstans:

Kod: Markera allt

// Simpel personnummers verifierings grej
//
// Gjord av Rickard Andersson en tråkig Torsdag
// exz@slackware.se
//
// Tack sagge för sällskapet och idén

function persnr($person_nr) {

    // Om personnumret är skrivet som ååmmdd-xxxx
    // Tipstack lema2.0 @ http://forum.slackware.se
    //

    if (strstr($person_nr,"-")) { $person_nr=str_replace("-","",$person_nr); }

    // Tar ut alla siffror utom sista
    //

    $p=substr($person_nr,0,9); 

    // Detta multiplicerar personnumret enligt
    // http://susning.nu/Personnummer
    //
    //   8 9 0 4 2 6 5 2 6
    // * 2 1 2 1 2 1 2 1 2

    for ($x=0;isset($p[$x]);$x++) {
        $t1=$x/2;
        $t2=round($x/2);
        if ($t1 == $t2) { $meep=$meep . $p[$x] * 2; }
        else { $meep=$meep . $p[$x]; }
    }

    // Detta lägger ihop personnumret enligt
    // http://susning.nu/Personnummer
    //
    // 1+6+9+0+4+4+6+1+0+2+1+2
    

    for ($x=0;isset($meep[$x]);$x++) { $mjew=$mjew + $meep[$x]; }
    

    // Detta kollar hur långt det är till närmsta 10-tal
    //
    // 36->40=4
    
    while (substr($mjew,1,1) != 0) {
        $mjew++;
        $result++;
    }
    
    // Jämför siffran vi fått ut med den som är angiven
    //
    
    if ($result == substr($person_nr,9,1)) { return(1); }
    else { return(0); }
}

$valid=persnr("890426526");
Senast redigerad av exz den 27 sep 2005 22:08, redigerad totalt 1 gånger.
Administratör på slackware.se
& moderator i forumet
Slackware sedan version 7.1
lema2.0
Allsmäktig
Inlägg: 354
Blev medlem: 15 jun 2004 01:56

Inlägg av lema2.0 »

Du kankse vill göra så den kan hantera personnummer med - också, dvs ååmmdd-xxxx, eftersom det skrivs så på många ställen.
exz
Allsmäktig
Inlägg: 378
Blev medlem: 28 sep 2003 21:03
ORT: Falun

Inlägg av exz »

tack för tipset. :) ska uppdatera senare ikväll
Administratör på slackware.se
& moderator i forumet
Slackware sedan version 7.1
exz
Allsmäktig
Inlägg: 378
Blev medlem: 28 sep 2003 21:03
ORT: Falun

Inlägg av exz »

sådär, uppdaterad.
Administratör på slackware.se
& moderator i forumet
Slackware sedan version 7.1
the1980man
Lärling
Inlägg: 67
Blev medlem: 31 jan 2006 21:03
ORT: många... ;)

Inlägg av the1980man »

Jag har inte hunnit köra så mycket PHP än... men rent spontant... måste du verkligen först kolla
om strängen innehåller "-" innan du 'tar bort det'?

Räcker det inte med att bara ersätta alla ev. funna "-" med "" oavsett om de finns eller ej?

Det skulle göra funktionen mer optimerad eftersom den då slipper läsa igenom strängen för att kolla om det finns
"-" och därefter ta bort det...

Sen själva mult-funktionen... är det inte smidigare att ha en bit som togglar (bit++ på enbitsvariabel borde göra det)
och sen köra enbart köra
if (bit) {
2*
}
elsif {
1*
}

Då slipper man använda tunga operationer såsom round ;)
exz
Allsmäktig
Inlägg: 378
Blev medlem: 28 sep 2003 21:03
ORT: Falun

Inlägg av exz »

du har förstås rätt att det bara är att försöka ersätta på även om det inte finns. ang. resten av scriptet så var det ett tag sedan jag skrev detta och jag ser hellre att det fungerar så som jag vill än att optimera det så långt det går genom att ge mig in på saker jag inte är säker på.

om du förstår
Administratör på slackware.se
& moderator i forumet
Slackware sedan version 7.1
the1980man
Lärling
Inlägg: 67
Blev medlem: 31 jan 2006 21:03
ORT: många... ;)

Inlägg av the1980man »

Japp... det förstår jag till fullo...

Jag är bara lite optimeringsskadad efter alla kurser med algorithm-analys, optimering mm. :P

Fast det kan ju vara tips till andra som känner sig taggade att optimera vidare...
Användarens profilbild
Nille
Guru
Inlägg: 1475
Blev medlem: 17 jun 2004 02:41

Inlägg av Nille »

Man är aldrig optimerinsskadad.
I dag anser jag att det är motsatsen som är standard.
Vi har fått så kraftiga maskiner och anslutningar att folk struntar i att optimera.
Jag gillar en fint optimerad kod.
Och tycker att dom flessta utbildningar inte lägger tillräcklig energi på detta.
the1980man
Lärling
Inlägg: 67
Blev medlem: 31 jan 2006 21:03
ORT: många... ;)

Inlägg av the1980man »

Det håller jag faktiskt med om..

Största grejen ser man ju bara i pyttemjuk... (Microsoft)

Generera en enkel HTML-sida i word: 19 kB
Samma sida i egen ren HTML: 40 B

Aningens skillnad då :P
Användarens profilbild
Nille
Guru
Inlägg: 1475
Blev medlem: 17 jun 2004 02:41

Inlägg av Nille »

Jag skriver alltid i vim, det fungerar så fint för mej.
Och vim klarar av mer än man tror när man börjar använda det.
the1980man
Lärling
Inlägg: 67
Blev medlem: 31 jan 2006 21:03
ORT: många... ;)

Inlägg av the1980man »

Jag skrev förut alltid i windows anteckningar...

Emacs har det blivit när jag skriver i Linux eftersom jag verkligen gillar den editorn...

Eller inte gillar, I löööööööve it ;)

Jag har dock än inte ställt in den för HTML-redigering och PHP-redigering som jag vill ha den..

T.ex. 2 teckens indenteringsavstånd och automatisk indentering i PHP-läge samt lite andra
färger och finesser för ren XHTML-kod...

Vim har jag inte testat men jag hoppas att det är en texteditor och inte wysiwyg... :P
Användarens profilbild
Nille
Guru
Inlägg: 1475
Blev medlem: 17 jun 2004 02:41

Inlägg av Nille »

vim är en texteditor som finns i dom flessta unixsystem och den är liten så den får plats.
vim är en förbättrad vi. (vi improved)
En väldigt enkel texteditor som jag alltid kör i terminalen.
Det finns gvim med en gui men den kör jag aldrig.
Fördelen med att lära sej vi/vim är att den nässtan alltid finns på alla *nix.
Den är också väldigt kraftfull men tar lite tid att lära sig.
Många tvistar om vilken som är bäst av emacs och vim men det är en smaksak.
Men det är en editor du bör testa och lära dej om du vill jobba med linux.
Jag har fäger i min så jag lätt kan kolla kod den har även diff funktion om man vill kolla ändringar i en kod.
Sedan gillar jag att köra den i ett genomskinligt terminalfönster då jag finner det mera avslappnande för ögonen.
http://www.vim.org/about.php
Läs gärna 6kb beskrivningen på sidan (finns på svenska)
the1980man
Lärling
Inlägg: 67
Blev medlem: 31 jan 2006 21:03
ORT: många... ;)

Inlägg av the1980man »

Ok... Vim har jag bara hört i periferin tidigare men aldrig provat ut för egen del.

Jag har dock skrivit lite i vi nu under installations/konfigurationstester när jag installerat slimmade linux-distar där
inte ens emacs varit installerat.

Det som jag ser det riktigt stora fördelar med texteditors på Linux-sidan är ju att de är inriktade emot programmering
och inte dokumenthantering grafiskt sett i första hand om man jämför med ordbehandlare under windows...

Fast ordbehandlare och texteditors ska man (tycker jag iaf) skilja rätt mycket på.

Sen så vad gäller Emacs (och säkerligen Vim också) så går det bra att använda med rätt begränsad kunskap. Det
krävs bara lite envishet ifrån början och lite tips på hur grundläggande saker fungerar... sen så finns det alltid nya
fiffiga tillägg för den avancerade användaren såsom konfigurera programstöd mm.

Men jag ska helt klart prova ut Vim lite också och sedan lämna ett litet omdöme här om det är önskvärt.