避免在PHP中使用HTML转义字符

3

我将尝试使用 PHP 进行 API 调用。其中一个参数是货币。

我的 API 调用如下:

<?php 
$call=".....&currency=USD&......."; 
$response = hash_call("Pay", $call);
?>

但是如果我打印该调用,则会输出以下内容:
....¤cy=USD&.......

我查看后发现&curren是表示¤的

编辑: 我尝试使用urlencode和htmlentities,但希望在源码中得到&currency,实际上却得到了%26currency和& amp;currency。

我想对'&currency'进行编码,以便浏览器不会将&curren转换为¤。 谢谢。


你看到的是其他东西。请添加更多细节。 - Ignacio Vazquez-Abrams
1
这难道不应该只是输出的问题吗?并非在实际的调用/响应中... - Jason McCreary
@Vulcan 当然。这里有一个更新。我尝试了猜测和检查。使用urlencode,当我回显时以及在源代码中,我得到%26currency。使用htmlentities,当我回显时,我得到&currency,但是源代码看起来像&currency。我需要的是当我回显和查看源代码时都是&currency。:( 到目前为止还没有成功。 - aVC
为什么你要尝试对它进行编码呢?你之前说过:“如果我查看HTML源代码,它看起来很好。”。所以,没问题了...不用担心浏览器在将其显示回给你时会做什么(即仅在想在浏览器中显示时才使用htmlentities进行包装)。你在源代码中看到的就是你想要发送的内容。 - Hamish
请查看http://stackoverflow.com/questions/10538929/php-encoding-issue-htmlentities我在这里解决了同样的问题。谢谢。 - Namfon Nachya
显示剩余8条评论
1个回答

4

PHP并没有进行任何转换。

为了显示的目的,浏览器&current转换为¤t。如果您想在浏览器中查看$call的值,则需要使用htmlentities对其进行包装,但是这会特别编码字符以使原始的$call浏览器中显示。

然而,在将$call传递给hash_call之前,不应对其执行任何操作。

请记住,原始字符串和浏览器显示之间存在很大的区别。


对于大多数实际目的来说是正确的,但在这里不起作用。为什么呢:我做了一个测试。&Current将在浏览器中显示为&Current本身。因此,如果我使用$call="...&Currency=USD&...",错误代码会说'currency'参数不能为空。所以我猜服务器也遇到了同样的翻译问题。 - aVC
这是一个巨大的假设,很可能是不正确的。你有关于你尝试调用的服务的文档吗? - Hamish
是的,我也认为我理解了相同的想法。解释可能不是问题所在。感谢您的帮助。 - aVC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接