urlencode& SQL请求不起作用...(cUrl和html特殊字符似乎不起作用)

时间:2016-02-12 11:39:39

标签: php sql curl urlencode

问题的第一部分解决了。请看编辑2

我有以下问题: 我使用htmlspecialchar从我的数据库中获取了一个用户名,在这种情况下:exámple。我通过cUrl将其解析为Riot-Games API。

$url = 'https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/exámple?api_key=<my-api-key>'
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);   

return $output;

curl_close($ch);

我的结果是:{ "status": { "message": "Not Found", "status_code": 404 } } 用户存在!我可以在浏览器中打开URL,它可以正常工作......


我认为cUrl无法解析字符串中的á,如果我复制网址并在浏览器中打开它

  

á已转换为%C3%A1

以某种方式可以将PHP中的网址转换为可发送的请求吗?


在此先感谢;)


修改

如果我在我的用户数据库中使用ex%C3%A1mple而不是exámple,那就可以了!


编辑2

我现在使用urlencode用户名。 然而我绝望了......

我的简单脚本:

echo urlencode($row["username"]) . " " . urlencode('exámple');

$row["username"]输出保证'exámple'。这是一个SQL请求。

我得到的输出:

  

ex%E1mple ex%C3%A1mple

解决:

urlencode(utf8_encode($row["username"]))

1 个答案:

答案 0 :(得分:1)

使用urlencode函数对名称进行编码。见下面的代码:

$name='exámple';
$encoded_name = urlencode('exámple'); //output: ex%C3%A1mple

$url = 'https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/'.$encoded_name.'?api_key=<my-api-key>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);

echo $output;