dedlfix: PHP vs. JavaScript Funktion - kleiner Unterschied

Beitrag lesen

Hi!

Seht Ihr einen Unterschied, der dieses Verhalten erklärt?

PHP hat etwas andere Regeln für die Stringnotation als Javascript. Du lässt dir zwar $characterSet ausgeben (was du vermutlich wegen nicht beachtetem Kontextwechsel zu HTML ohne HTML-spezifische Behandlung machst - Stichwort htmlspecialchars()), schaust aber anscheinend nicht genau hin.

Vielen Dank für nen Tipp.

Das erste Zeichen im "verschlüsselten" String liegt vor dem ' alle anderen dahinter.

Außerdem ist bei dem folgenden Code-Ausschnitt die erste Zeile falsch:

if ($characterMap[$currentChar]) {
              $toReturn .= $characterMap [$currentChar];
      } else {
              $toReturn .= $currentChar;
      }

Sie erzeugt nicht nur eine Notice, wenn du das error_reporting auf E_ALL stehen hättest. Ein Unterstrich im verschlüsselten Wert sollte zu 0 auflösen, doch diese Zeile ergibt false, weswegen er nicht dekodiert wird. Du prüfst nicht, ob $characterMap[$currentChar] existiert (dafür wäre isset() geeigneter), sondern testest das Ausdrucksergebnis auf einen boolschen Wert. Ein String mit dem Inhalt 0 ergibt false aufgrund PHPs eingebauter Typumwandlung ('_' => '0').

Lo!