Is there a simple way to escape/unescape an arbitrary character in PHP by doubling it, for example:
- in ANSI SQL,
"you can ""escape"" this way"
- in printf(),
you can express a %% this way
Escaping is quite easy with str_replace()
, but reversing the process to unescape the string is not that easy, so does anyone know of a pair of functions, or a library to do this?
The idea is that I need to serialize an array this way:
array('a','b', '~','c')
=> 'a~b~~~~c'
The individual strings cannot be empty.
Update: just realized that this "encoding" is broken, thanks to the useful comments below.
Seems to me that
and
would be the complements of each other.
Take a look at
addcslashes()
andstripcslashes
which will allow you to slash those characters you want to. That's maybe helpful.Next to that your question does not really say where exactly you see a problem in unescaping, so I can not offer anything else than using the
str_replace
in reverse.As several users pointed it out in the comments, this question is flawed and has no possible answer.
A detailed explanation of my goal, and an appropriate answer have been provided at Provide a human-readable representation of an identifier?
Use preg_split() with
You have to use the flag PREG_SPLIT_DELIM_CAPTURE. After some struggling, I am quite surprised that there actually is a regex solution for this.
becomes