Heim Backend-Entwicklung PHP-Problem Welche Methoden der PHP-Serialisierung gibt es?

Welche Methoden der PHP-Serialisierung gibt es?

Jul 08, 2021 pm 03:21 PM
php 序列化

PHP-Serialisierungsmethode: 1. Verwenden Sie die Funktion serialize(), Syntax „serialize(value)“; 2. Verwenden Sie die Funktion „base64_encode()“; 3. Verwenden Sie die Funktion „var_export()“;

Welche Methoden der PHP-Serialisierung gibt es?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Szenario:

Cookies können keine Daten in zusammengesetzter Form speichern, daher muss ein mehrdimensionales Array serialisiert und serialisiert werden Im Cookie gespeichert. Allerdings ist die PHP-Version zu niedrig (5.2) und unterstützt nicht json_encode. Lösung (Serialisierung und Deserialisierung):

1. Die Serialisierungs- und Deserialisierungsfunktionen unterstützen nur eine -dimensionale Arrays. Es wird gesagt, dass die Unterstützung für Objekte besser ist, json_encode unterstützt keine Objekte

Alle Werte in PHP können mit der Funktion serialize(), der Serialisierung, in eine Zeichenfolge konvertiert werden, die gespeichert werden kann. Die Funktion unserialize() kann die Zeichenfolge wieder auf den ursprünglichen Wert von PHP zurücksetzen, was einer Deserialisierung entspricht. Nehmen Sie ein Objekt als Beispiel. Wenn ein Objekt serialisiert wird, werden alle Variablen des Objekts gespeichert, aber die Methoden des Objekts werden nicht gespeichert. Nur der Name der Klasse wird gespeichert. Um ein Objekt deserialisieren zu können, muss außerdem die Klasse des Objekts definiert worden sein. Wenn Sie ein Objekt der Klasse A serialisieren, wird eine auf Klasse A bezogene Zeichenfolge zurückgegeben, die die Werte aller Variablen im Objekt enthält.

Wenn Sie ein Objekt in einer anderen Datei deserialisieren möchten, muss die Klasse des Objekts vor der Deserialisierung definiert werden. Dies kann erreicht werden, indem Sie eine Datei einbinden, die die Klasse definiert, oder die Funktion spl_autoload_register() verwenden. Das Syntaxformat der Funktion

serialize() lautet wie folgt:

serialize(mixed $value)
Nach dem Login kopieren

wobei $value die zu serialisierende Variable ist. Die Funktion

serialize() kann jeden Typ außer Ressource verarbeiten. Beim Serialisieren eines Objekts ruft PHP vor der Sequenzaktion die Memberfunktion __sleep() des Objekts auf. Dadurch können alle Bereinigungsvorgänge durchgeführt werden, bevor das Objekt serialisiert wird. Wenn ein Objekt mit unserialize() deserialisiert wird, wird in ähnlicher Weise die Memberfunktion __wakeup() aufgerufen.

Nachdem Sie die Funktion serialize() zum Serialisieren des Objekts verwendet haben, können Sie die resultierende Zeichenfolge in einer Datei oder Datenbank speichern und dann die Funktion unserialize() verwenden, um die Zeichenfolge bei Bedarf zu deserialisieren.

2, base64_encode und base64_decode

, das gleiche Problem, mehrdimensional wird nicht unterstützt, bei Verwendung erhöht die Base64-Codierung die Länge der Zeichenfolge. Um dieses Problem zu lösen, können Sie es mit gzcompress verwenden:
function my_serialize( $obj )
{
  return base64_encode(gzcompress(serialize($obj)));
}

//反序列化
function my_unserialize($txt)
{
  return unserialize(gzuncompress(base64_decode($txt)));
}
Nach dem Login kopieren

3. var_export und eval

$look_books = array($aid => array($cid => array('article_name' => $article->articlename, 'chapter_name' => $chapter->chaptername))) + $look_books;
            $look_books = var_export($look_books, true);
            setcookie('look_books', $look_books, $cookieTime, '/', '.dym.com');
Nach dem Login kopieren

unterstützen mehrdimensionale Arrays, es ist jedoch zu beachten, dass einfache und doppelte Anführungszeichen Escape-Zeichen haben, was zu eval führt fehlschlagen und die Escape-Zeichen müssen entfernt werden

stripcslashes() 即可。
Nach dem Login kopieren

4. wddx_serialize_value und wddx deserialize

$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
  
//序列化数组
$s = wddx_serialize_value($a);
echo $s;
  
//输出结果(查看输出字符串的源码):<wddxPacket version=&#39;1.0&#39;><header/><data><struct><var name=&#39;a&#39;><string>Apple</string></var><var name=&#39;b&#39;><string>banana</string></var><var name=&#39;c&#39;><string>Coconut</string></var></struct></data></wddxPacket>
  
echo &#39;<br /><br />&#39;;
  
//反序列化
$o = wddx_deserialize($s);
print_r($o);
//输出结果:Array ( [a] => Apple [b] => banana 1 => Coconut )
Nach dem Login kopieren

Auf diese Weise nimmt das XML-Tag selbst zu viele Zeichen und mehr Speicher ein. Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Methoden der PHP-Serialisierung gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles