出于某种原因,在将像这样 Jack’s Spindle 这样的字符串从文本表单提交到 php 后,我得到:
Jack%u2019s Spindle
这不是 PHP 的 urlencode() 会做的,而是 Jack%92s+Spindlerawurlencode() = Jack%92s%20Spindle
因此, urldecode() 和原始版本无法解码该字符串......是否有其他函数用于此类字符串?

——

此外,Jack’s Spindle 将是对上述内容进行编码的 HTML 安全方式,但 urlencode() 和 raw* 分别产生:Jack%26%238217%3Bs+SpindleJack%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/

10-11 03:47