【问题标题】:Functions that work the same in encode URL in Javascript and PHP?在 Javascript 和 PHP 中编码 URL 的功能相同吗?
【发布时间】:2011-04-26 22:28:53
【问题描述】:

我一直在寻找可以在 PHP 和 Javascript 之间交换的 [用于编码和解码 URL] 的函数 [我可以在 javascript 中对 URL 进行编码并在 PHP 中对其进行解码,反之亦然],有很多解决方案向上,如 escape() 和 unescape(); encodeURI() 和 decodeURI() 用于 javascript,或者 urlencode() 和 urldecode() 用于 PHP,但是没有一对可以完美地协同工作。因为我想使用 Ajax jQuery 发送帖子数据以供 PHP 页面使用,并且数据可以与特殊字符混合,这就是为什么我需要一个在 PHP 和 Javascript 中工作相同的函数:

例子:

$.ajax{url: "test.php", data: "http://www.thisURLContainSpecialCharac.ter"}

看到上面的代码了吗?它在数据中包含特殊字符,可能会导致问题。

感谢任何建议 :)。谢谢。 [x]

【问题讨论】:

    标签: javascript jquery urlencode


    【解决方案1】:

    您不想使用 Javascript 的 escape 函数,因为它不进行 URL 编码。有关失败的示例,请参见 http://xkr.us/articles/javascript/encode-compare/

    Javascript 的 encodeURIComponent 将使用 UTF-8 进行编码,因此如果您使用它并确保您的请求具有 UTF-8 的内容类型,您应该能够使用 PHP 进行解码

    utf8_decode(urldecode($yourString)).

    【讨论】:

    • 你是如何发送数据的?您是在 GET URL 中还是在 POST 消息正文中传递它?
    • @xx3004,我无法在不知道您在做什么的情况下给您举个例子。 “但我它双向工作”似乎有一个错字。你能澄清一下吗?
    • @xx3004,JavaScript 可以对传递给 JavaScript 函数的特殊字符进行编码。 JavaScript 并不位于浏览器 URL 栏和您的系统之间。浏览器应确保只有格式正确的 URL 才能到达您的服务器,但您不应依赖它这样做。
    • 它是什么,它发送给谁?如果是用户坐在浏览器的 URL 栏中,那么您无法控制他们输入的内容,所以不用担心。如果是您编写的在服务器中运行的一些 JavaScript 代码,请使用encodeURIComponent 担心它。无论发送什么消息,您的服务器代码始终需要检查它接收到的消息是否格式正确且经过授权。
    • 如果帖子正文的内容类型标头设置为application/x-www-form-urlencoded,那么 PHP 应该自动对其进行解码。如果内容是通过 URL 的查询部分作为 GET 或 POST 请求的一部分发送的,那么 PHP 应该再次自动对其进行解码。唯一需要解码的是当您使用带有 POST 正文的时髦内容类型时。
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2010-11-09
    • 2014-07-23
    • 2018-01-20
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多