PHP urlencode 问题与我的字符串中的一个参数:“¬ify_url”错误地返回

因此,当我在以下字符串上使用 PHP 的urlencode时,似乎出现了一个技术性问题,我认为这是一个保留的 PHP 单词“ ¬ ”。


原始字符串:


cancel_url=https://example.com/payment_cancelled&notify_url=https://example.com/order_notify

我使用 urlencode 得到以下结果:


cancel_url=https%3A%2F%2Fexample.com%2Fpayment_cancelled¬ify_url=https%3A%2F%2Fexample.com%2Forder_notify

正如您在上面注意到的,它创建的 '¬' 特殊字符(就在单词 'cancelled' 之后)。所以对我来说,“¬ify_url”的“¬”部分似乎是一个运算符保留的运算符字(PHP 中的“¬”?)。


我在 url 编码后尝试了 PHP 的 str_replace 函数,如下所示:


$paramUrlString = str_replace('¬', '&not', $paramUrlString);

$paramUrlString = str_replace('&#170', '&not', $paramUrlString);

(也尝试使用该特殊字符的 ASCII 码)


我现在已经没有想法了。请帮忙,谢谢。


皈依舞
浏览 240回答 2
2回答

侃侃尔雅

urlencode 通常根本不替换&not,但会替换&为%26. 请参阅此处的示例:http: //sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52您可以尝试在 urlencode 之前替换&为。%26$urlString = str_replace('&', '%26', $urlString);

慕标5832272

并不是 PHP 中的任何东西都用 替换字符串&not,¬而是您用来查看/显示数据的任何东西都在这样做。鉴于;不需要关闭实体,我敢打赌您将 URL 放入 XML 中而没有正确转义实体。虽然&是在 URL 和 XML 之间发生冲突的实体,但不止于此。最简单的解决方案是,如果您在需要调用的 XML 文档中嵌入原始字符串:$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);另一方面,最好的解决方案是根本不手动创建 XML 文档。使用DOMDocument或XMLWriter 之类的库。这不仅处理数据的转义/编码,还处理创建适当 XML 文档的所有其他微妙复杂性。
打开App,查看更多内容
随时随地看视频慕课网APP