@newaitix

Как преобразовать такую строку в массив?

Есть такая строка
timestamp|i:1550665420;current_language|s:1:"1";current_currency|s:1:"3";comprlist|s:5:"14322";

это сессионные данные как преобразовать это в массив ?
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вот и выросло поколение, которое не знает про волшебный функционал PHP serialize() / unserialize()...
Ну, это даже и к лучшему.

А вот то что пассажир решил таки идти напролом и делать не по-людски, а хранить на сайте миллион файлов в сессиями - это, конечно, печально.
Ответ написан
KorniloFF
@KorniloFF
Работаю по font-end / JS
<?php
// Мы используем функцию unserialize() для загрузки сессионных данных в массив
// $session_data из строки, извлекаемой из базы данных.
// Данный пример дополняет пример, описывающий использование serialize().

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) {
    // если процедура извлечения данных не удалась, то инициализируем пустой массив
    $session_data = array();
} else {
    // сейчас у нас должны быть сериализованные данные в $tmp[0].
    $session_data = unserialize($tmp[0]);
    if (!is_array($session_data)) {
        // что-то пошло не так, инициализируем пустой массив
        $session_data = array();
    }
}
?>


php.net/manual/ru/function.unserialize.php

См. пример 1.
Ответ написан
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
Да в лоб:
$string = 'timestamp|i:1550665420;current_language|s:1:"1";current_currency|s:1:"3";comprlist|s:5:"14322";';
$result = [];
foreach(preg_split('/;/', $string) as $val) {
    $res = preg_split('/\|/', $val);    
    if (isset($res[1]))
        $result[$res[0]] = unserialize($res[1].";");
}    
var_dump($result);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы