PHP – Aus einer Zeichenkette (String) eine eindeutige Zahl generieren

Benötigt wurde diese Funktion für den Modified Shop in Verbindung mit einen Datenimport für Artikel aus einem anderen System.
Der Modified Shop arbeitet intern nicht mit Artikelnummern, sondern mit einer eindeutigen ID welche als integer mit 10 Stellen definiert ist.
Eine fortlaufende Generierung einer ID ist nicht zu empfehlen, da bei einem neuen Import sich die ID zur Artikelnummer verändern kann. Somit hätte man zum Beispiel auf einmal ganz andere Artikel im Warenkorb oder in der Wunschliste.
Um das zu verhindern kann eine eindeutige ID in Abhängigkeit zur Artikelnummer generiert werden.
Die Feldlänge der products_id sollte in der Datenbank entsprechend angepasst werden.

Beispiel:
Artikelnummer: ü45×13
Generierte ID: 252451201

Numerische Werte im String bleiben erhalten.
Alle anderen Werte werden durch die Funktion ord() in ihr dezimales Pendant der ASCII Table konvertiert.

<?php
$value_1 = "0ü45x13";
echo $value_1."<br />"; //Kontrolle

if (is_numeric($value_1)) {$value_1 = $value_1;} else {$value_1 = ascii_to_dec($value_1);}
echo $value_1; //Kontrolle

function ascii_to_dec($str) {
  $varString = "";
  for ($i = 0, $j = strlen($str); $i < $j; $i++) {
    if (is_numeric($str{$i})) {
        $varString .= $str{$i};
    } 
    else {
        $varString .= ord($str{$i});
    }
  }
  return $varString;
}
?>
Veröffentlicht unter Programierung, Shop Systeme Getagged mit: ,

Hinterlasse eine Antwort

Diese Website nutzt Cookies, um unseren Besuchern die bestmögliche Funktionalität bieten zu können. Durch die weitere Nutzung unserer Seiten erklären Sie sich mit dem Einsatz von Cookies einverstanden. Erfahren Sie mehr zum Einsatz von Cookies und dem Umgang mit Ihren persönlichen Daten in unserer: Datenschutzerklärung

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen", um Ihnen das beste Surferlebnis möglich zu geben. Wenn Sie diese Website ohne Änderung Ihrer Cookie-Einstellungen zu verwenden fortzufahren, oder klicken Sie auf "Akzeptieren" unten, dann erklären Sie sich mit diesen.

Schließen