【发布时间】:2011-09-20 13:53:24
【问题描述】:
有没有一种简单的方法可以通过加倍来转义/取消转义 PHP 中的任意字符,例如:
- 在 ANSI SQL 中,
"you can ""escape"" this way" - 在 printf() 中,
you can express a %% this way
使用str_replace() 转义非常容易,但是反转该过程以取消转义字符串并不是那么容易,所以有人知道一对函数或一个库来做到这一点吗?
这个想法是我需要以这种方式序列化一个数组:
array('a','b', '~','c') => 'a~b~~~~c'
各个字符串不能为空。
更新:刚刚意识到这个“编码”被破坏了,感谢下面有用的 cmets。
【问题讨论】:
-
你要转义多少个字符?
-
a~b~~~~c是模棱两可的,所以你问的是不可能的。例如,它可能是两个元素:a,b~~c。为什么不直接使用serialize或json_encode? -
'a~b~~~~c'这不起作用。array('a', 'b~~c')呢?为什么不用serialize()来序列化一个数组呢? -
@konforce:我考虑了这两种选择,但它们不符合我的确切需求。关于您的评论,没有歧义,并且该过程是 100% 可逆的。
~后面不跟另一个~是一个分隔符,而~~是一个普通的~字符。 -
@Benjamin,
array('a','b', '~','c') => 'a~b~~~~c'。array('a','b~~c') => 'a~b~~~~c'。解释如何让两个输入产生相同的输出并不模棱两可。