【问题标题】:how to serialize svg so it can fit into a cookie如何序列化 svg 使其适合 cookie
【发布时间】:2012-07-09 18:42:41
【问题描述】:

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

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

所以基本上我的问题归结为将 svg 序列化为可以存储在 cookie 中的东西。我该怎么做?

我知道 php 中有 serialize() 和 unserialize(),但 serialize 接受混合值,我不确定 svg 是否属于该类别。

我对混合值进行了一些研究,看起来它可以接受 structarrays、int 等,但不能接受 svg。如果我对此有误,请告诉我,因为使用序列化和反序列化会使事情变得更容易。

谢谢。

【问题讨论】:

  • 如果您使用 cookie 来存储图像,您可能做错了什么。
  • 其实这很可能通过序列化来实现。您可以将 svg 序列化为字符串并将字符串存储在 cookie 中。然后从cookie中获取字符串并将其反序列化为svg。我可以很好地完成那部分。我唯一的问题是在存储图像时发出命令。基本上任何时候 svg 发生变化,我都希望能够保存它。

标签: php serialization cookies image-processing svg


【解决方案1】:

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

【讨论】:

  • 转义是什么意思,如何用分号转义?
  • 有些字符有特殊含义。如果你想使用这些,你必须以某种方式“隐藏”它们以防止以特殊方式被解释。如果我没记错的话,基本上你所要做的就是$cookie_value = urlencode($svgstring);。例如,这将用%20 (en.wikipedia.org/wiki/URL_encoding) 替换` `(空格)。稍后您可以在从用户那里获取 cookie 值时使用$svgstring=urldecode($cookie_value);
  • alite 我明白这一点,但我现在的问题是这个。我在 中有一个 和一个 。我的问题是每当我的 svg 更改时,我都想将 svg 保存到 cookie 中。基本上我使 svg 可编辑。因此,只要有更改,也就是 onchange,我就可以将其保存到 cookie 中。但是 没有 onchange 事件(如果我错了,请纠正我)。那我该怎么办呢?
  • ... 下面的一些代码是指 id a 和 b 并更改它。基本上这就是我现在的结构。唯一的问题是我想使用 onchange javascript 属性,但这些标签没有它。
  • 嗯,你是改变它们的人,那为什么要举办一个关于它的活动呢?您可能会尝试做的是用方法将这些封装在一个对象中。这样,您可以在您操作对象时调用函数。不过,我怀疑没有比您目前正在尝试的方法更好的方法来实现您想要做的事情。
猜你喜欢
  • 2021-10-04
  • 2020-07-25
  • 2023-02-13
  • 2021-07-23
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多