首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的字符串中有一个参数:"&notify_url“不正确地返回"¬ify_url”

我的字符串中有一个参数:"&notify_url“不正确地返回"¬ify_url”
EN

Stack Overflow用户
提问于 2019-12-22 17:30:09
回答 2查看 622关注 0票数 0

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

原始字符串:

代码语言:javascript
复制
cancel_url=https://example.com/payment_cancelled&notify_url=https://example.com/order_notify

我使用urlencode得到以下结果:

代码语言:javascript
复制
cancel_url=https%3A%2F%2Fexample.com%2Fpayment_cancelled¬ify_url=https%3A%2F%2Fexample.com%2Forder_notify

正如您在上面注意到的,它所创建的“”特殊字符(就在“取消”一词之后)。因此,在我看来,"¬ify_url“的”“部分似乎是一个操作符保留操作符字(在PHP中”?“)。

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

代码语言:javascript
复制
$paramUrlString = str_replace('¬', '&not', $paramUrlString);
$paramUrlString = str_replace('&#170', '&not', $paramUrlString);

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

我现在没什么主意了。请协助,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-22 17:52:17

urlencode通常根本不替换&not,而是用%26替换&。参见这里的示例:http://sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52

您可以尝试在urlencode之前用&替换%26

代码语言:javascript
复制
$urlString = str_replace('&', '%26', $urlString);
票数 0
EN

Stack Overflow用户

发布于 2019-12-22 23:30:41

这并不是说PHP中的任何东西都在用¬替换字符串¬,而是不管您使用什么来查看/显示数据。

考虑到实体上的关闭;不是必需的,我敢打赌,您将该URL放入XML中,而不正确地转义这些实体。虽然&是URL和XML之间冲突的实体,但是还有更多。

最简单的解决方案是,如果要在XML文档中嵌入原始字符串,则需要调用:

代码语言:javascript
复制
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);

另一方面,最好的解决方案是根本不手工创建XML文档。使用像DOMDocumentXMLWriter这样的库。这不仅处理了数据的转义/编码,还处理了创建适当XML文档的所有其他微妙的复杂性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59446521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档