php 获取qq用户昵称和在线状态实例
如果我们利用php获取QQ用户名与在线状态QQ并未给我们提供api接口了,如果要获取我们可以通过QQ空间或QQ网页版聊天来实现。
QQ通过返回不同的图片,来表示在线或离线,图标也随之变换
既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,彩色图片一定会比同样子的暗色图片要大,于是,找出某个样式的彩色与暗色图片的中间值,就能达到通过判断头部返回长度的方法来获取QQ在线状态
以下是代码
<?php function get_qq_status($uin) { error_reporting(0); $f = file_get_contents('http://wpa.qq.com/pa?p=1:' . $uin . ':4'); if (!$f) return (true); foreach ($http_response_header as $val) { if (strpos($val, 'Content-Length') !== 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 = 'http://wpa.qq.com/pa?p=2:' . $qq . ':41&r=' . time(); $headInfo = get_headers($url, 1); $length = $headInfo['Content-Length']; if ($length == 1243) { return true; } else { return false; } } //获取QQ昵称 function getQQNick($qq) { $str = file_get_contents('http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=' . $qq); $pattern = '/' . preg_quote('"nickname":"', '/') . '(.*?)' . preg_quote('",', '/') . '/i'; preg_match($pattern, $str, $result); return $result[1]; } //获取QQ姓名 function getQQName($qq) { //$qqArr = include 'friendArr.php';//预先设置的 //$username = $qqArr[$qq]; if (!$username) { $username = getQQNick($qq); } return $username; } ?>
本文地址:
转载随意,但请附上文章地址:-)

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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