如何在PHP中逃避这些&符号?

时间:2015-05-04 16:14:40

标签: php json escaping steam steam-web-api

我目前正在编写一些使用Steam网络API的内容,我正试图通过网络API获取Steam市场价格,如下所示:

$url = 'http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.$itemInfo['market_hash_name'];

$itemInfo['market_hash_name']来自我从API获得的另一个JSON。

应该返回这样的内容:

http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=SCAR-20 | Contractor (Well-Worn)

它确实如此,因为当我将它扔进浏览器时,它会转换为

http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=SCAR-20%20|%20Contractor%20(Well-Worn)

返回我需要的JSON。

但出于某种原因,当它与get_file_contents一起使用时,它会像这样翻译&符号:

http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=Operation Breakout Weapon Case

如果我把它扔进浏览器窗口,它什么也不返回。因此,如果我使用htmlspecialcharshtml_entity_decode并不重要,因为每当我将其放入get_file_contents时,它只会再次对&符号进行编码。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

所以如果我使用htmlspecialchars或html_entity_decode并不重要,因为每当我把它放入get_file_contents时它只会再次对&符号进行编码。

这些都不是 URI - 编码。这是urlencode的工作。

所以:

$url = 'http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.urlencode($itemInfo['market_hash_name']);