PHP 我的字符串中的参数出现 urlencode 问题:“¬ify_url”不正确 returns“¬ify_url”
PHP urlencode issue with a parameter in my string: "¬ify_url" incorrectly returns "¬ify_url"
所以当我在下面的字符串上使用 PHP 的 urlencode 时,似乎出现了一个技术问题,我 think 在保留 PHP 字词“¬”上。
原字符串:
cancel_url=https://example.com/payment_cancelled¬ify_url=https://example.com/order_notify
我使用url编码得到以下结果:
cancel_url=https%3A%2F%2Fexample.com%2Fpayment_cancelled¬ify_url=https%3A%2F%2Fexample.com%2Forder_notify
正如您在上面注意到的那样,它创建的特殊字符“¬”(就在单词 'cancelled' 之后)。所以对我来说,“¬ify_url”的“¬”部分似乎是一个运算符保留的运算符词(PHP 中的“¬”?)。
我试过PHP的str_replace函数url编码后如下:
$paramUrlString = str_replace('¬', '¬', $paramUrlString);
$paramUrlString = str_replace('ª', '¬', $paramUrlString);
(也尝试该特殊字符的 ASCII 码)
我现在 运行 没主意了。请帮忙,谢谢。
urlencode 通常根本不会替换 ¬
,但会用 %26
替换 &
。请参阅此处的示例:http://sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52
您可以尝试在 urlencode 之前将 &
替换为 %26
。
$urlString = str_replace('&', '%26', $urlString);
并不是说 PHP 中的任何内容都在用 ¬
替换字符串 ¬
,而是无论您使用什么 view/display 数据都在这样做。
鉴于不需要对实体关闭 ;
,我敢打赌您将 URL 放入 XML 而没有正确转义实体。虽然 &
是 URL 和 XML 之间存在冲突的实体,但还有更多。
最简单的解决方案是,如果您要在 XML 文档中嵌入原始字符串,您需要调用:
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);
另一方面,最佳 解决方案是完全不手动创建 XML 文档。使用像 DOMDocument or XMLWriter 这样的库。这不仅可以处理数据的 escaping/encoding,还可以处理创建适当 XML 文档的所有其他微妙的复杂性。
所以当我在下面的字符串上使用 PHP 的 urlencode 时,似乎出现了一个技术问题,我 think 在保留 PHP 字词“¬”上。
原字符串:
cancel_url=https://example.com/payment_cancelled¬ify_url=https://example.com/order_notify
我使用url编码得到以下结果:
cancel_url=https%3A%2F%2Fexample.com%2Fpayment_cancelled¬ify_url=https%3A%2F%2Fexample.com%2Forder_notify
正如您在上面注意到的那样,它创建的特殊字符“¬”(就在单词 'cancelled' 之后)。所以对我来说,“¬ify_url”的“¬”部分似乎是一个运算符保留的运算符词(PHP 中的“¬”?)。
我试过PHP的str_replace函数url编码后如下:
$paramUrlString = str_replace('¬', '¬', $paramUrlString);
$paramUrlString = str_replace('ª', '¬', $paramUrlString);
(也尝试该特殊字符的 ASCII 码)
我现在 运行 没主意了。请帮忙,谢谢。
urlencode 通常根本不会替换 ¬
,但会用 %26
替换 &
。请参阅此处的示例:http://sandbox.onlinephpfunctions.com/code/e9d62797d01f8162170e5ad5181e14fc339faa52
您可以尝试在 urlencode 之前将 &
替换为 %26
。
$urlString = str_replace('&', '%26', $urlString);
并不是说 PHP 中的任何内容都在用 ¬
替换字符串 ¬
,而是无论您使用什么 view/display 数据都在这样做。
鉴于不需要对实体关闭 ;
,我敢打赌您将 URL 放入 XML 而没有正确转义实体。虽然 &
是 URL 和 XML 之间存在冲突的实体,但还有更多。
最简单的解决方案是,如果您要在 XML 文档中嵌入原始字符串,您需要调用:
$string = htmlspecialchars($string, ENT_XML1 | ENT_COMPAT);
另一方面,最佳 解决方案是完全不手动创建 XML 文档。使用像 DOMDocument or XMLWriter 这样的库。这不仅可以处理数据的 escaping/encoding,还可以处理创建适当 XML 文档的所有其他微妙的复杂性。