2017-11-03 5 views
2

Ich habe ein Problem beim Vergleich von 2 identischen Zeichenfolgen. Die erste Zeichenfolge wird aus einer Datenbank abgerufen und die andere fest codiert.php - 2 identische Zeichenfolge mit unterschiedlichen Längen

Die Zeichenfolge ist { "name":"John", "age":30, "car":null }.

Ich habe diesen Code zum ersten Mal ausgeführt und die Datenbank-Zeichenfolge hat eine Länge von 79 Zeichen und die hart codierte Zeichenfolge hat eine Länge von 39 Zeichen.

echo '<pre>';var_dump($json_data);echo '</pre>'; 
echo '<pre>';var_dump('{ "name":"John", "age":30, "car":null }');echo '</pre>'; 

Nach einigem Suchen vorgeschlagen wurde bin2hex() und mit zu verwenden, dass ich es verengt haben " Zeichen nach unten.

Ersetzen des Datenbankwert mit einem " und Ausführen des folgenden Codeausganges

2671756f743b für den Datenbankwert und 22 für den harten codierten Wert.

echo bin2hex($json_data)."<br>"; 
echo bin2hex('"')."<br>"; 

Was ist der richtige Weg, um beide Werte zu erhalten mit strcmp() zu vergleichen, wie auf der Grundlage des Vergleichs i anderer Code tun werden.

+0

Was ist var '$ json_data'? Gibt es eine Zeichenfolge oder ein JSON-Objekt? – panther

+0

Es ist nicht klar, was Sie mit der bin2hex-Funktion machen wollen. Außerdem zeigen Sie nicht den Code an, der die Abfrage ausführt, und wie Daten gespeichert werden. – Warrior

+1

'2671756f743b' ist' " ', die HTML-Entität für ein Anführungszeichen; [html_entity_decode()] (http://php.net/manual/en/function.html-entity-decode.php) konvertiert es in ein tatsächliches Anführungszeichen –

Antwort

1

Dank @Mark Baker musste ich html_entity_decode() den Datenbankwert und jetzt beide Werte übereinstimmen.

Verwandte Themen