Fehler in %GMP_ROT13

  • Hab zufällig herausbekommen, dass so etwas


    Code
    %GMP_ROT13('Micro$oft')


    dazu führt, dass der String nicht konvertiert wird.
    Normalerweise behandelt ROT13 ja nur alphabetische Zeichen [a-zA-Z] und überspringt alle sonstigen. Korrekt wäre also ein Ergebnis wie "Zvpeb$bsg".


    Gruß,


    Mikka

  • Zitat

    Hab zufällig herausbekommen, dass so etwas

    Code
    %GMP_ROT13('Micro$oft')


    dazu führt, dass der String nicht konvertiert wird.
    Normalerweise behandelt ROT13 ja nur alphabetische Zeichen [a-zA-Z] und überspringt alle sonstigen. Korrekt wäre also ein Ergebnis wie "Zvpeb$bsg".


    Also ich habe dein Problem nicht nachvollziehen können. Bei mir scheint alles korrekt zu funktionieren. Hier meine Testvorlage:

    Code
    %GMP_ROT13('Microsoft')
    %GMP_ROT13('MicroSoft')
    %GMP_ROT13('Micro$oft')
    %GMP_ROT13('M1cro$oft')


    Ergibt:

    Code
    Zvpebfbsg
    ZvpebFbsg
    Zvpeb$bsg
    Z1peb$bsg


    Auch im Quellcode kann ich keinen Fehler finden. Es werden nur die Groß- und Kleinbuchstaben codiert. Die restlichen werden nicht berührt.

  • Okay, war nicht völlig korrekt von mir.
    Ich habe folgendes gemacht, um den beschriebenen Fehler zu evozieren:


    Code
    %SetHeader('X-Insult','%GMP_ROT13(~Micro$oft adorer~)')%-


    Zum Sinn des Ganzen: Frag nicht ... :lol:
    Jedenfalls scheint er Zvpeb$bsg doch hinzukriegen, nur dieser String wird unbehandelt zurückgegeben bei mir, warum auch immer.
    Alternativ wird aber "Micro$oft Certified Spongiform Encephalitis (MCSE)" korrekt konvertiert. Das verstehe wer will, ich tu's nicht ... :blink:


    Gruß,


    Mikka

  • Zitat

    %SetHeader('X-Insult','%GMP_ROT13(~Micro$oft adorer~)')%-


    Ok, damit funktioniert(e) es bei mir auch nicht. Frage aber bitte nicht, wo der Fehler lag, ich weiß es nicht. Theoretisch sollte die Ausgabe jetzt gleich wie vorher sein, ist sie aber nicht.


    Jedenfalls weiß ich jetzt, warum ich mich all die Jahre vor C gedrückt habe!
    [img]sources/mods/schilder_smilie_creator/text2schild.php?smilienummer=1&text=Mit VB wär das nie passiert!' border='0' alt='Mit VB wär das nie passiert!' /]


    Eine aktualisierte Version gibts am Dienstag.


    Nochmals vielen Dank für deine Mithilfe!
    MfG
    Gaijin

  • Zitat

    Frage aber bitte nicht, wo der Fehler lag, ich weiß es nicht. Theoretisch sollte die Ausgabe jetzt gleich wie vorher sein, ist sie aber nicht.


    Jedenfalls weiß ich jetzt, warum ich mich all die Jahre vor C gedrückt habe!
    [img]sources/mods/schilder_smilie_creator/text2schild.php?smilienummer=1&text=Mit VB wär das nie passiert!' border='0' alt='Mit VB wär das nie passiert!' /]


    Eine aktualisierte Version gibts am Dienstag.


    Also, mich würde schon irgendwie interessieren, wie's zu diesem Verhalten kommt.
    Lass dir mit der aktualisierten Version ruhig Zeit ... eine Abfrage à la

    Code
    if (str == "Micro$oft adorer") return "Zvpeb$bsg nqbere";
    else rot13(arg[0]);


    ist ja nur wenig effektiv, möglicherweise sind andere Multiwort-Kombinationen auch betroffen, auch mit Umlauten oder so.
    C hab ich schon laaange nicht mehr gemacht, interessant wär's aber schon. :)

  • Mikka

    Zitat

    ... eine Abfrage à la

    Code
    if (str == "Micro$oft adorer") return "Zvpeb$bsg nqbere";
    else rot13(arg[0]);


    ist ja nur wenig effektiv, möglicherweise sind andere Multiwort-Kombinationen auch betroffen, auch mit Umlauten oder so.


    Nein, scheinbar war es eine Variablenzuweisung, mit der C nicht ganz einverstanden war. Das betraf nicht die Umwandlung oder die Sonderzeichen, sondern die gesamte Zeichenfolge.