因此,当我在下面的字符串上使用PHP的urlencode时,似乎出现了一个技术问题,我认为位于一个保留的PHP单词“‘”上。
原始字符串:
cancel_url=https://example.com/payment_cancelled¬ify_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正如您在上面注意到的,它所创建的“”特殊字符(就在“取消”一词之后)。因此,在我看来,"¬ify_url“的”“部分似乎是一个操作符保留操作符字(在PHP中”?“)。
在url编码之后,我尝试了PHP的str_replace函数,如下所示:
$paramUrlString = str_replace('¬', '¬', $paramUrlString);
$paramUrlString = str_replace('ª', '¬', $paramUrlString);(也尝试为该特殊字符使用ASCII代码)
我现在没什么主意了。请协助,谢谢。
发布于 2019-12-22 17:52:17
urlencode通常根本不替换¬,而是用%26替换&。参见这里的示例:http://sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52
您可以尝试在urlencode之前用&替换%26。
$urlString = str_replace('&', '%26', $urlString);发布于 2019-12-22 23:30:41
这并不是说PHP中的任何东西都在用¬替换字符串¬,而是不管您使用什么来查看/显示数据。
考虑到实体上的关闭;不是必需的,我敢打赌,您将该URL放入XML中,而不正确地转义这些实体。虽然&是URL和XML之间冲突的实体,但是还有更多。
最简单的解决方案是,如果要在XML文档中嵌入原始字符串,则需要调用:
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);另一方面,最好的解决方案是根本不手工创建XML文档。使用像DOMDocument或XMLWriter这样的库。这不仅处理了数据的转义/编码,还处理了创建适当XML文档的所有其他微妙的复杂性。
https://stackoverflow.com/questions/59446521
复制相似问题