URL变量中的特殊字符

时间:2019-02-16 23:46:14

标签: php

目前,我正在尝试摆弄Deezer API,并遇到一个小问题,我正在尝试从这位艺术家那里收集内容。

XYLØ-没什么可说的

https://api.deezer.com/search/track?q=XYLØ - Nothing Left To Say

上面的页面以JSON格式显示内容,但是当我使用以下代码时。

$id = 'XYLØ - Nothing Left To Say';
$h = str_replace(' ', '+', $id);
$json_string = 'https://api.deezer.com/search/track?q='.$h;
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);

我在图像请求中得到一个空托盘。

$obj['data'][0]['album']['cover_medium']

关于如何使它正常工作的任何想法?

1 个答案:

答案 0 :(得分:1)

使用PHP的内置函数来查询args,

 //changed $h to $id (see below)
$json_string = 'https://api.deezer.com/search/track?q='.urlencode($id);

http://php.net/manual/en/function.urlencode.php

  

当编码要在URL的查询部分中使用的字符串时,此功能很方便,它是将变量传递到下一页的便捷方法。

您也可以删除这些内容(也可以将其删除):

  $h = str_replace(' ', '+', $id);

因为urlencode做到了!!

作为奖励

您可以使用

http://php.net/manual/en/function.http-build-query.php

  

http_build_query —从提供的关联(或索引)数组生成URL编码的查询字符串。

要从数组构建整个查询字符串,我认为这对于阅读此文件的人可能有用...