php - URL 变量中的特殊字符
问题描述
目前我正在尝试使用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']
关于如何让它正常工作的任何想法?
解决方案
使用 PHP 的内置函数查询参数,
//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 编码的查询字符串。
从数组构建整个查询字符串,我认为这可能对阅读本文的人有用......