steckl: Einen String "entbuchstabisieren"

Beitrag lesen

Hi,

Zahlen bleiben Zahlen und die Buchstaben kriegen eine 2-stelligen Zahl. Ihre Position im Alphabet z.B.

Das macht so keinen Sinn, wenn du von dem neuen String (mit nur Zahlen) wieder auf die Artikelnummer schliessen willst.

Beispiel:
Artikelnummer:  A01
Dein Ergebnis:  0101

Vielleicht waere es fuer dich eine moeglichkeit, alle Zeichen in ihren ASCII-Code umzuwandeln. Dafuer gibt es sicher schon vorgefertigte Funktionen von PHP.

Und genauso hab ich das auch gemacht, ihr habt mich auf den richigen Weg geführt, danke nochmal! :)

Falsch, du wandelst nur Grossbuchstaben in ASCII-Code um und nicht ALLE zeichen.

vielleicht nicht gerade die schlankeste lösung, aber es funktioniert (temp_ses[4] ist hierbei der zu bearbeitende String):

$temp_artikelnummer = '';
   for ($op=0;$op < strlen($temp_ses[4]);$op++) {
    $temp_char_ascii = ord(substr($temp_ses[4],$op,1));
    $temp_char_nonascii = substr($temp_ses[4],$op,1);
     if ($temp_char_ascii < 65 || $temp_char_ascii > 90) {
       $temp_artikelnummer .= $temp_char_nonascii;
     } else {
       $temp_artikelnummer .= $temp_char_ascii;
     }
}

Da ich kein PHP kann hoffe ich deinen Code richtig zu interpretieren.
Wenn das aktuelle Zeichen ein Grossbuchstabe ist haengst du an den Ergebnisstring dessen ASCII-Code an, wenn es eine Zahl ist haengst du diese Zahl direkt an (und nicht deren ASCII-Code).

Also waere das Ergebnis bei einer Artikelnummer von "AAA" und "656565" immer das gleiche. Du muesstest also Ziffern auch in ASCII-Code umwandeln.

Ein weiteres Problem tritt auf, wenn die Artikelnummer einen Kleinbuchstaben enthaelt. Ich weiss nicht, ob das moeglich ist, aber wenn musst du diese ebenfalls irgendwie behandeln. Momentan wuerdest du versuchen, sie ohne Umwandlung in die DB zu schreiben. Hierbei ist ein Problem, dass der ASCII-Code auch 3-Stellig sein kann (beispiel: x = 120).

mfG,
steckl