首页 > 解决方案 > 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

解决方案


使用 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 编码的查询字符串。

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


推荐阅读