json — Как мне избежать этих амперсандов в PHP?

В настоящее время я пишу что-то, использующее веб-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 он просто снова кодирует амперсанды.

Как мне это сделать?

0

Решение

Так что это не имеет значения, если я использую 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']);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]