rundiz / serializer
序列化类提供了功能,如检查字符串是否已序列化。它支持 Unicode 文本。
1.0.5
2023-11-04 18:31 UTC
Requires
- php: >=5.4.0
README
序列化类提供了序列化功能,例如检查字符串是否已序列化,可能进行序列化,可能进行反序列化,或者检查是否为 JSON 编码(有效的 JSON),以防止重复序列化。此序列化器也支持 Unicode 文本。
示例
检查字符串是否已序列化
$Serializer = new \Rundiz\Serializer\Serializer(); $serialized_string = 's:54:"this is a string. สตริงภาษาไทย";'; $faked_serialized_string = 's:12:"fake serialized string";'; var_dump($Serializer->isSerialized($serialized_string);// true var_dump($Serializer->isSerialized($faked_serialized_string);// false
或者您可以使用 \Rundiz\Serializer\SerializerStatic
类的静态方法,与 \Rundiz\Serializer\Serializer
类相同的方法。
$serialized_string = 's:54:"this is a string. สตริงภาษาไทย";'; var_dump(\Rundiz\Serializer\SerializerStatic::isSerialized($serialized_string));// true
首先检查数据是否未序列化,然后进行序列化
$raw_data = array('mango', 'tree' => array('mango', 'banana')); echo $Serializer->maybeSerialize($raw_data);// a:2:{i:0;s:5:"mango";s:4:"tree";a:2:{i:0;s:5:"mango";i:1;s:6:"banana";}} echo \Rundiz\Serializer\SerializerStatic::maybeSerialize($raw_data);// a:2:{i:0;s:5:"mango";s:4:"tree";a:2:{i:0;s:5:"mango";i:1;s:6:"banana";}}
首先检查数据是否未反序列化,然后进行反序列化
$serialized_data = 'i:-5436;'; echo $Serializer->maybeUnserialize($serialized_data);// -5436 (integer) echo \Rundiz\Serializer\SerializerStatic::maybeUnserialize($serialized_data);// -5436 (integer) echo \Rundiz\Serializer\SerializerStatic::maybeUnserialize(-5436);// -5436 (integer)
处理 JSON
var_dump($Serializer->isJSONEncoded('"Hello world"'));// true var_dump($Serializer->isJSONEncoded('012345'));// false var_dump($Serializer->isJSONEncoded('true'));// true var_dump($Serializer->isJSONEncoded('false'));// true var_dump($Serializer->isJSONEncoded('null'));// true var_dump($Serializer->isJSONEncoded(true));// true var_dump($Serializer->isJSONEncoded(false));// false var_dump($Serializer->isJSONEncoded(null));// false
处理 base64
var_dump($Serializer->isBase64Encoded(5555));// false var_dump($Serializer->isBase64Encoded('NTU1NQ=='));// true var_dump($Serializer->isBase64Encoded('test'));// false var_dump($Serializer->isBase64Encoded('dGVzdA=='));// true var_dump($Serializer->isBase64Encoded(null));// false
更多示例,请查看 tests 文件夹。