因此,当我在以下字符串上使用 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正如您在上面注意到的,它创建的 '¬' 特殊字符(就在单词 'cancelled' 之后)。所以对我来说,“¬ify_url”的“¬”部分似乎是一个运算符保留的运算符字(PHP 中的“¬”?)。我在 url 编码后尝试了 PHP 的 str_replace 函数,如下所示:$paramUrlString = str_replace('¬', '¬', $paramUrlString);$paramUrlString = str_replace('ª', '¬', $paramUrlString);(也尝试使用该特殊字符的 ASCII 码)我现在已经没有想法了。请帮忙,谢谢。
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
urlencode 通常根本不替换¬,但会替换&为%26. 请参阅此处的示例:http: //sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52
您可以尝试在 urlencode 之前替换&为。%26
$urlString = str_replace('&', '%26', $urlString);
慕标5832272
TA贡献1966条经验 获得超4个赞
并不是 PHP 中的任何东西都用 替换字符串¬,¬而是您用来查看/显示数据的任何东西都在这样做。
鉴于;不需要关闭实体,我敢打赌您将 URL 放入 XML 中而没有正确转义实体。虽然&是在 URL 和 XML 之间发生冲突的实体,但不止于此。
最简单的解决方案是,如果您在需要调用的 XML 文档中嵌入原始字符串:
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);
另一方面,最好的解决方案是根本不手动创建 XML 文档。使用DOMDocument或XMLWriter 之类的库。这不仅处理数据的转义/编码,还处理创建适当 XML 文档的所有其他微妙复杂性。
- 2 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消
