Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何序列化svg以使其适合cookie_Php_Serialization_Cookies_Image Processing_Svg - Fatal编程技术网

Php 如何序列化svg以使其适合cookie

Php 如何序列化svg以使其适合cookie,php,serialization,cookies,image-processing,svg,Php,Serialization,Cookies,Image Processing,Svg,我需要序列化svg图像,以便将其存储到cookie中 我需要设置cookie,然后在它们返回时取消序列化svg图像 因此,基本上我的问题归结为将svg序列化为可以存储在cookie中的内容。我该怎么做 我知道php中有serialize()和unserialize(),但serialize包含一个混合值,我不确定svg是否属于这一类 我研究了一些混合值,它看起来可以接受struct、arrays、int等,但不能接受svg。如果我错了,请告诉我,因为使用serialize和unserialize

我需要序列化svg图像,以便将其存储到cookie中

我需要设置cookie,然后在它们返回时取消序列化svg图像

因此,基本上我的问题归结为将svg序列化为可以存储在cookie中的内容。我该怎么做

我知道php中有serialize()和unserialize(),但serialize包含一个混合值,我不确定svg是否属于这一类

我研究了一些混合值,它看起来可以接受
struct
array
s、
int
等,但不能接受svg。如果我错了,请告诉我,因为使用serialize和unserialize会让事情变得更简单


谢谢。

嗯,可缩放矢量图形只是XML,因此只是文本(通常是UTF-8编码的,但除非明确添加任何非ASCII字符,否则它应该与ASCII相同)。但是SVG字符串将包含cookie中不允许的特殊字符,因此您需要转义这些字符(分号、逗号和空格应该转义,如果我没记错的话,您可以使用php中的urlencode函数)。这就是序列化方面的全部内容。最大的问题可能是大小限制:cookie不能超过4096个字符,包括名称的长度。对于更复杂的SVG,这可能太少。

什么是转义?如何使用分号转义?有些字符有特殊含义。如果你想使用这些,你必须以某种方式“隐藏”它们,以免它们被特殊的方式解释。基本上你所要做的就是
$cookie\u value=urlencode($svgstring),如果我没记错的话。例如,这将用
%20
()替换```(空格)。稍后您可以使用
$svgstring=urldecode($cookie\u值)
当你从user.alite获得cookie值时,我理解这一点,但我现在的问题是这个。我有一个和一个在里面。我的问题是,每当svg发生更改时,我都想将svg保存到cookie中。基本上,我使svg可编辑。因此,无论何时有更改,也就是onchange,我都可以将其保存到cookie中。但是不要有一个onchange事件(如果我错了,请纠正我)。那我该怎么办呢。。。下面的一些代码引用id a和b并对其进行更改。基本上这就是我现在的结构。唯一的问题是我想使用onchange javascript属性,但是这些标签没有。好吧,是你改变了它们,那么为什么会有这样的事件呢?您可能会尝试使用方法将它们封装到对象中。这样,您就可以在对象被您操纵时调用函数。不过,我怀疑,没有比您目前尝试的方法更好的方法了。如果您使用cookie存储图像,那么您可能做了一些非常错误的事情。事实上,序列化很有可能做到这一点。您可以将svg序列化为字符串,并将字符串存储在cookie中。然后从cookie中获取字符串并将其取消序列化为svg。那部分我做得很好。我唯一的问题是它存储图像时的命令。基本上,只要svg发生更改,我都希望能够保存它。