В настоящее время я пишу что-то, использующее веб-API Steam, и пытаюсь получить рыночную цену Steam через веб-API, например:
$url = 'http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.$itemInfo['market_hash_name'];
$itemInfo['market_hash_name']
это что-то из другого JSON, которое я получил от API.
Это должно вернуть что-то вроде этого:
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
Который ничего не возвращает, если я брошу его в окно браузера. Так что это не имеет значения, если я использую htmlspecialchars
или же html_entity_decode
потому что всякий раз, когда я помещаю это в get_file_contents
он просто снова кодирует амперсанды.
Как мне это сделать?
Так что это не имеет значения, если я использую 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']);
Других решений пока нет …