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;
}
?>

Schreibe einen Kommentar