ホームページ php教程 php手册 php 获取qq用户昵称和在线状态实例

php 获取qq用户昵称和在线状态实例

Jun 02, 2016 am 09:14 AM
explode foreach include preg_match substr

如果我们利用php获取QQ用户名与在线状态QQ并未给我们提供api接口了,如果要获取我们可以通过QQ空间或QQ网页版聊天来实现。

QQ通过返回不同的图片,来表示在线或离线,图标也随之变换

既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,彩色图片一定会比同样子的暗色图片要大,于是,找出某个样式的彩色与暗色图片的中间值,就能达到通过判断头部返回长度的方法来获取QQ在线状态

以下是代码

<?php
function get_qq_status($uin) {
    error_reporting(0);
    $f = file_get_contents(&#39;http://wpa.qq.com/pa?p=1:&#39; . $uin . &#39;:4&#39;);
    if (!$f) return (true);
    foreach ($http_response_header as $val) {
        if (strpos($val, &#39;Content-Length&#39;) !== false) {
            return (intval(substr($val, 16, 50)) > 1000);
        }
    }
}
?>
ログイン後にコピー

上面比较简单,下面来个更好的

<?php
function tphp_qq_online($uin) {
    $reques = "GET /pa?p=1:" . $uin . ":1 HTTP/1.1rn";
    $reques.= "Host: wpa.qq.comrn";
    $reques.= "User-Agent: PHP_QQ_SPYrnrn";
    if (!($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) return (-1);
    if (!(socket_connect($socket, "wpa.qq.com", 80))) return (-1);
    if (!(socket_write($socket, $reques))) return (-1);
    if (!($respon = socket_read($socket, 1024, PHP_BINARY_READ))) return (-1);;
    socket_close($socket);
    $field = explode("rn", $respon);
    for ($i = 0; $i < count($field); $i++) {
        if (strncasecmp($field[$i], "Location:", 9) == 0) {
            if (strpos($field[$i], "online")) {
                $ret = 1;
            } else if (strpos($field[$i], "offline")) {
                $ret = 0;
            } else {
                $ret = - 1;
            } // if
            break;
        } // if
        
    } // for
    return ($ret);
}
/* }}} */
echo tphp_qq_online(561272831);
?>
ログイン後にコピー

例,qq用户昵称和在线状态

<?php
//获取QQ状态
function getQQState($qq) {
    $url = &#39;http://wpa.qq.com/pa?p=2:&#39; . $qq . &#39;:41&r=&#39; . time();
    $headInfo = get_headers($url, 1);
    $length = $headInfo[&#39;Content-Length&#39;];
    if ($length == 1243) {
        return true;
    } else {
        return false;
    }
}
//获取QQ昵称
function getQQNick($qq) {
    $str = file_get_contents(&#39;http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=&#39; . $qq);
    $pattern = &#39;/&#39; . preg_quote(&#39;"nickname":"&#39;, &#39;/&#39;) . &#39;(.*?)&#39; . preg_quote(&#39;",&#39;, &#39;/&#39;) . &#39;/i&#39;;
    preg_match($pattern, $str, $result);
    return $result[1];
}
//获取QQ姓名
function getQQName($qq) {
    //$qqArr = include &#39;friendArr.php&#39;;//预先设置的
    //$username = $qqArr[$qq];
    if (!$username) {
        $username = getQQNick($qq);
    }
    return $username;
}
?>
ログイン後にコピー


本文地址:

转载随意,但请附上文章地址:-)

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java ArrayList を走査するときに要素を削除するために foreach と iterator を使用することの違いは何ですか? Java ArrayList を走査するときに要素を削除するために foreach と iterator を使用することの違いは何ですか? Apr 27, 2023 pm 03:40 PM

1. Iterator と foreach の違いはポリモーフィックな違いです (foreach の最下層は Iterator です) Iterator はインターフェイス型であり、コレクションや配列の型を気にしません; for と foreach の両方がコレクションの型を知る必要がありますまず、コレクション内の要素の種類についても; 1. foreach の最下層はイテレータによって記述されたコードであると言われる理由: 逆コンパイルされたコード: 2. foreach の削除とイテレータの違い まず、Alibaba を見てください。 Java 開発マニュアル。ただし、ケース 1 ではエラーは報告されず、ケース 2 (java.util.ConcurrentModificationException) では最初にエラーが報告されます。

PHPでforeachループの数を確認する方法 PHPでforeachループの数を確認する方法 Jul 10, 2023 pm 02:18 PM

PHP が foreach ループの数を決定する手順: 1. "$fruits" の配列を作成します; 2. 初期値 0 でカウンタ変数 "$counter" を作成します; 3. "foreach" を使用してループします配列を介してループ本体内のカウンタ変数の値を増加させ、各要素とそのインデックスを出力します; 4. foreach ループの外側にカウンタ変数の値を出力し、ループがどの要素に到達したかを確認します。

php include と include_once の違いは何ですか php include と include_once の違いは何ですか Mar 22, 2023 am 10:38 AM

PHP を使用して Web ページを作成する場合、他の PHP ファイルのコードを現在の PHP ファイルに含める必要がある場合があります。現時点では、include 関数または include_once 関数を使用してファイルのインクルードを実装できます。では、include と include_once の違いは何でしょうか?

PHPはキー値を反転した配列を返します PHPはキー値を反転した配列を返します Mar 21, 2024 pm 02:10 PM

この記事では、PHP がどのようにしてキー値を反転した後に配列を返すのかについて詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP キー値フリップ 配列キー値フリップは、配列内のキーと値を交換して、元のキーを値として、元の値をキーとして持つ新しい配列を生成する配列に対する操作です。実装方法 PHP では、次の方法で配列のキーと値の反転を実行できます。 array_flip() 関数: array_flip() 関数は、キーと値の反転操作に特に使用されます。引数として配列を受け取り、キーと値が交換された新しい配列を返します。 $original_array=[

PHPのexplode関数の使い方とエラー解決方法 PHPのexplode関数の使い方とエラー解決方法 Mar 10, 2024 am 09:18 AM

PHP のexplode関数は、文字列を配列に分割するために使用される関数で、非常に一般的で柔軟性があります。分解関数を使用する過程で、エラーや問題が発生することがよくありますが、この記事では、分解関数の基本的な使用方法を紹介し、エラー報告を解決するいくつかの方法を紹介します。 1.explode関数の基本的な使い方 PHPでは、explode関数の基本的な構文は次のとおりです。explode(string$separator,string$stri

explode関数とimplode関数を使用して文字列を分割および結合する explode関数とimplode関数を使用して文字列を分割および結合する Jun 15, 2023 pm 08:42 PM

PHP プログラミングでは、文字列の処理は頻繁に必要な操作です。その中で、文字列の分割と結合は 2 つの一般的な要件です。これらの操作をより便利に実行するために、PHP は 2 つの非常に実用的な関数、つまり、explode 関数と implode 関数を提供します。この記事では、これら2つの機能の使い方と実践スキルを紹介します。 1.explode関数explode関数は、指定された区切り文字に従って文字列を分割し、配列を返すために使用されます。その関数プロトタイプは次のとおりです。

PHP は文字列の最初の文字の ASCII 値を返します。 PHP は文字列の最初の文字の ASCII 値を返します。 Mar 21, 2024 am 11:01 AM

この記事では、PHP が返す文字列の最初の文字の ASCII 値について詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP は文字列の最初の文字の ASCII 値を返します はじめに PHP では、文字列の最初の文字の ASCII 値を取得することは、文字列処理と文字エンコーディングの基本的な知識を必要とする一般的な操作です。 ASCII 値は、コンピュータ システムで文字の数値を表すために使用され、文字の比較、データの送信、および保存に重要です。文字列の最初の文字の ASCII 値を取得するプロセスには、次の手順が含まれます。 文字列の取得: ASCII 値を取得する文字列を決定します。変数または文字列定数を指定できます

PHP で展開関数を使用する場合の一般的なエラーと解決策 PHP で展開関数を使用する場合の一般的なエラーと解決策 Mar 11, 2024 am 08:33 AM

タイトル: PHP でexplode関数を使用する際の一般的なエラーと解決策 PHPでは、explode関数は、文字列を配列に分割するために使用される一般的な関数です。ただし、不適切な使用や不正なデータ形式が原因で、いくつかの一般的なエラーが発生する可能性があります。この記事では、explode 関数の使用時に発生する可能性のある問題を分析し、解決策と具体的なコード例を示します。間違い 1: delimiter パラメーターが渡されない。explode 関数を使用するときに最もよくある間違いの 1 つは、delimiter パラメーターが渡されないことです。

See all articles