出于某种原因,在将像这样 Jack’s Spindle
这样的字符串从文本表单提交到 php 后,我得到:Jack%u2019s Spindle
这不是 PHP 的 urlencode()
会做的,而是 Jack%92s+Spindle
或 rawurlencode()
= Jack%92s%20Spindle
因此, urldecode()
和原始版本无法解码该字符串......是否有其他函数用于此类字符串?
——
此外,Jack’s Spindle
将是对上述内容进行编码的 HTML 安全方式,但 urlencode()
和 raw* 分别产生:Jack%26%238217%3Bs+Spindle
和 Jack%26%238217%3Bs%20Spindle
...%u2019
来自哪里?它代表什么?你怎么把它恢复到那个无害的撇号?
最佳答案
好吧,只有你能告诉我们它是从哪里来的。你是从哪里得到你的文本的,它被提交到哪些转换?我承认我还没有看到那种编码策略。
也就是说,它与 Javascript 编码 UTF-16 代码单元的方式非常相似: \uXXXX
其中每个 X
代表一个十六进制字符。要将其转换为 HTML 实体,您可以执行以下操作:
preg_replace('/%u([a-fA-F0-9]{4})/', '&#x\\1;', $string)
关于PHP URL 编码/解码跨表单字段 %u2019 的漂亮引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3393126/