用php写一个可以获取qq昵称的api,请求可以是get或post,返回值为带有状态码和昵称的json串
时间: 2024-03-29 12:37:50 浏览: 36
PHP 根据QQ号获取QQ头像和昵称
好的,以下是一个可以获取 QQ 昵称的 API 示例,支持 GET 和 POST 请求,返回带有状态码和昵称的 JSON 串:
```php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$qq = $_GET['qq'] ?? '';
} else if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$qq = $_POST['qq'] ?? '';
} else {
http_response_code(405);
exit(json_encode([
'code' => 405,
'msg' => 'Method Not Allowed'
]));
}
if (!ctype_digit($qq)) {
http_response_code(400);
exit(json_encode([
'code' => 400,
'msg' => 'Bad Request'
]));
}
$url = 'http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=' . $qq;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
$html = curl_exec($ch);
curl_close($ch);
preg_match('/<div class="f-nick" title="(.*?)">/', $html, $matches);
if (count($matches) > 1) {
$nickname = $matches[1];
$data = [
'code' => 200,
'msg' => 'OK',
'nickname' => $nickname
];
} else {
$data = [
'code' => 404,
'msg' => 'Not Found'
];
}
header('Content-Type: application/json');
echo json_encode($data);
```
该 API 接受一个名为 `qq` 的参数,其值为要获取昵称的 QQ 号码,如果请求的方法不是 GET 或 POST 则返回 405 状态码和错误信息。如果 `qq` 参数不是数字则返回 400 状态码和错误信息。如果成功获取到昵称则返回 200 状态码和昵称,否则返回 404 状态码和错误信息。
阅读全文