有没有一种简单的方法可以通过加倍来逃避/取消PHP中的任意字符,例如:
"you can ""escape"" this way"
you can express a %% this way
使用str_replace()
进行转义很容易,但是将转换过程转换为字符串不是那么容易,所以有人知道一对函数或库来执行此操作吗?
我的想法是我需要以这种方式序列化数组:
array('a','b', '~','c')
=> 'a~b~~~~c'
单个字符串不能为空。
更新:刚刚意识到此“编码”已被破坏,感谢下面的有用评论。
答案 0 :(得分:1)
对我而言
str_replace($char, $char.$char, $string);
和
str_replace($char.$char, $char, $string);
将是彼此的补充。
答案 1 :(得分:1)
正如一些用户在评论中指出的那样,这个问题是有缺陷的,没有可能的答案。
提供了我的目标的详细解释和适当的答案答案 2 :(得分:0)
查看addcslashes()
和stripcslashes
,这样您就可以删除想要的字符。这可能会有所帮助。
除此之外,你的问题并没有真正说明你在哪里看到了无意义的问题,所以除了反向使用str_replace
之外,我无法提供任何其他内容。
答案 3 :(得分:0)
将preg_split()与
一起使用(?<!-)-(?!-)|(?:-)((?:-{2})+)(?:-)
您必须使用PREG_SPLIT_DELIM_CAPTURE标志。 经过一番挣扎,我很惊讶实际上有一个正则表达式的解决方案。
a-b----c-hl--g------lo-x
变为
Array ( [0] => a [1] => b [2] => -- [3] => c [4] => hl--g [5] => ---- [6] => lo [7] => x )