Se avete provato a serializzare e poi deserializzare una stringa multi-byte in PHP, avrete sicuramente notato che il risultato non è quello sperato. Questo perché la funzione unserialize di PHP non lavora correttamente con le stringe multi-byte. Potete aggiungere ed usare la seguente funzione, al posto della classica unserialize, per ovviare al problema:
1 2 3 4 |
"]function mb_unserialize($string) { $string = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $string); return unserialize($string); } |
In alternativa consiglio di utilizzare le funzioni serialize/unserialize in congiungione con la codifica base64. In pratica per serializzare:
1 |
$serialized_val = base64_encode(serialize($userialized_array)); |
mentre per deserializzare:
1 |
$unserialized_array = unserialize(base64_decode($serialized_val)); |
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta