У меня есть сериализованная строка PHP, которую я десериализовал, используя php -serialize или 'locutus/php/var/unserialize'
в Node js.
"a:2:{s:3:\"$or\";a:1:{i:0;a:1:{s:4:\"$and\";a:1:{i:0;a:1:{s:20:\"attributes.FIRSTNAME\";C:18:\"MongoDB\\BSON\\Regex\":49:{a:2:{s:7:\"pattern\";s:2:\"^a\";s:5:\"flags\";s:1:\"i\";}}}}}}s:4:\"$and\";a:1:{i:0;a:1:{s:3:\"$or\";a:2:{i:0;a:1:{s:8:\"batch_id\";a:1:{s:7:\"$exists\";b:1;}}i:1;a:1:{s:2:\"sc\";a:1:{s:3:\"$ne\";i:-2;}}}}}}"
Я получаю ошибку, когда Я пытаюсь десериализовать его, заявив:
SyntaxError: Unknown / Unhandled data type(s): c
Я десериализирую как:
unserialize(<serialized_string>);
Обновление:
Я пытаюсь код ниже при использовании php -serialize library:
const PhpSerialize = require("php-serialize");
const serialised_str = 'a:2:{s:3:"$or";a:1:{i:0;a:1:{s:4:"$and";a:1:{i:0;a:1:{s:20:"attributes.FIRSTNAME";C:18:"MongoDB\BSON\Regex":49:{a:2:{s:7:"pattern";s:2:"^a";s:5:"flags";s:1:"i";}}}}}}s:4:"$and";a:1:{i:0;a:1:{s:3:"$or";a:2:{i:0;a:1:{s:8:"batch_id";a:1:{s:7:"$exists";b:1;}}i:1;a:1:{s:2:"sc";a:1:{s:3:"$ne";i:-2;}}}}}}';
console.log(PhpSerialize.unserialize(serialised_str));
И получение этой ошибки:
Error: Expected '"' at index 106 while unserializing payload
Если я пытаюсь десериализовать строку без классов, это работает. Но если строка имеет некоторый класс PHP, она перестает работать.
Пожалуйста, кто-нибудь, помогите мне решить эту проблему. Заранее спасибо.