Portal > Foren > PHP > PHP-Programmierung > Kommentar zu [php] Validität von ISBN kontrollieren
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 17.01.2008, 23:07 Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 307
Standard Kommentar zu [php] Validität von ISBN kontrollieren

Ich hab mir das Script nicht ganz durchgesehen, aber beim Überfliegen sind mir einige Sachen aufgefallen.
  1. PHP-Code:
    // alle leerzeichen entfernen
        
    $ISBN str_replace("."""$ISBN); 
    "." ist ein Leerzeichen? Der Kommentar ist sowieso relativ überflüssig, da die Zeile Code nicht wirklich weiter beschrieben wird. Etwa das selbe wie:
    PHP-Code:
    // X wird 5 zugewiesen
    $x 5
  2. PHP-Code:
    $z1  substr($ISBN01);
          
    $z2  substr($ISBN11);
          
    $z3  substr($ISBN21);
          
    $z4  substr($ISBN31);
          
    $z5  substr($ISBN41);
          
    $z6  substr($ISBN51);
          
    $z7  substr($ISBN61);
          
    $z8  substr($ISBN71);
          
    $z9  substr($ISBN81);
          
    $z10 substr($ISBN91);
          
    $z11 substr($ISBN101);
          
    $z12 substr($ISBN111);
          
    $z13 substr($ISBN121); 
    Gar nicht schön... Besser:
    PHP-Code:
    $z1  $ISBN[0];
          
    $z2  $ISBN[1];
    //... 
    Aber wieso überhaupt diese vielen Zuweisungen? Ich würde das so machen:
    PHP-Code:
    $pruefziffer = (10-(($ISBN[0]+$ISBN[2]+$foo+$bar))); 
  3. PHP-Code:
    // wenn nun die berechnete Prüfziffer mit der übergebenen Prüfziffer identisch ist, dann handelt es sich um eine valide ISBN
          
    if($z13 == $pruefziffer)
          {
            return 
    true;
          }
          else
          {
            return 
    false// andernfalls gibt die Prüffunktion ein false zurück
          

    Schöner:
    PHP-Code:
    return $z13 == $pruefziffer
    bzw. eben:
    PHP-Code:
    return $ISBN[12] == $pruefziffer
Das soll keine Kritik sein... Ich versuche nur, deine Code-Qualität ein bisschen zu steigern
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.

Geändert von Bleistift (18.01.2008 um 09:09 Uhr)
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.01.2008, 00:45 Nach oben    #2
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Da seh ich auch noch ein bisserl was:

str_replace() kann mit Arrays:
PHP-Code:
    $ISBN str_replace(array('.''-'), '' $ISBN); 
Die ISBN-13-Abfrage kann man kürzer schreiben:
PHP-Code:
if (preg_match('/^97[8|9]\d{10}$/'$ISBN)) 
Zahl (bzw. String) in Array:
PHP-Code:
$aIsbn str_split($ISBN); 
Berechnung für ISBN-10 könnte dann so aussehen:
PHP-Code:
$iExpChecksum = (int) str_replace(array('x','X'), 10array_pop($aIsbn));

for (
$iSum $i 0$i 9$i++)
    
$iSum += ($i+1) * (int) $aIsbn[$i];

return 
$iSum 11 === $iExpChecksum
…allerdings muss dann hier vorher natürlich auch mit einem RegExp geprüft werden, damit ein anderer Buchstabe als x nicht als 0 gecastet wird.

Damit könnte man aber auch gleich die Positionen der Bindestriche überprüfen.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.01.2008, 07:48 Nach oben    #3
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.381
Standard

Zitat:
Zitat von Bleistift Beitrag anzeigen
Das soll keine Kritik sein...
schade! Ich bin stets an konstruktiver Kritik interessiert - und genau so habe ich den post auch verstanden!

Was die angesprochenen Punkte angeht:
Da ist einiges bei was sehr gut klingt - ich werde das überarbeiten! Bei dem einen oder anderen Vorschlag muss ich selbst erst ein wenig ausprobieren!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[php] Validität von ISBN kontrollieren Jann Hendrik Tutorials 0 16.01.2008 11:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45