有没有人喜欢讨论一下将QQ数字等级输出为图片显示 本帖最后由 laiyilong 于 2012-12-23 06:26:55 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if(isset($_GET['img'])) { die(file_get_contents("http://id.qq.com/level/img/$_GET[img].png"));}$a = base_convert(85,10,4); //85为数字等级$b = array(1=>'star',2=>'moon',3=>'sun',4=>'crown');$e = strlen($a);for($i=0;$i<$e;$i++){ $c = (int)substr($a,$i,1); if($c>0) for($d=0;$d<$c;$d++) echo '<img src="?img='.$b[$e-$i].'" />';} 为什么要把东西写的那么复杂,。。<?phpfunction qqdj($nowlevel){ /*星星1 月亮4 太阳16 皇冠64 */ $a = $b = $c = $d = 0; $d = floor($nowlevel/64); $dj= $nowlevel%64; $c = floor($dj/16); $dj = $dj%16; $b = floor($dj/4); $a = $dj%4; return array($a,$b,$c,$d);}$dj = 37;$dj = 71;$arr = qqdj($dj);print_r($arr); <?phpfunction qqdj($nowlevel){ /*星星1 月亮4 太阳16 皇冠64 */ $a = $b = $c = $d = 0; $d = floor($nowlevel/64); $dj= $nowlevel%64; $c = floor($dj/16); $dj = $dj%16; $b = floor($dj/4); $a = $dj%4; return array($a,$b,$c,$d);}function qqdjImg($nowlevel){ /*星星1 月亮4 太阳16 皇冠64 */ $arrDJ = array(); $arrDJ[] = floor($nowlevel/64); $dj= $nowlevel%64; $arrDJ[] = floor($dj/16); $dj = $dj%16; $arrDJ[] = floor($dj/4); $arrDJ[] = $dj%4; $arrImg = array( '<img src="http://id.qq.com/level/img/crown.png" />', '<img src="http://id.qq.com/level/img/sun.png" />', '<img src="http://id.qq.com/level/img/moon.png" />', '<img src="http://id.qq.com/level/img/star.png" />', ); $html = ''; foreach ($arrDJ as $k => $v) { $html .= str_repeat($arrImg[$k],$v); } print_r($arrDJ); return $html;}$dj = 37;$dj = 71;echo qqdjImg($dj);/*X-Powered-By: PHP/5.2.0Content-type: text/htmlArray( [0] => 1 [1] => 0 [2] => 1 [3] => 3)<img src="http://id.qq.com/level/img/crown.png" /><img src="http://id.qq.com/level/img/moon.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" />*/ 貌似用base_convert比floor要简单些,虽然返回的是字符串,你的是数组。更正一下图片地址,这只是讨论这个代码的实现,至于怎么采集等级不在讨论范围,比如一些论坛也有类似的等级显示,用我的代码的话只需要在图片数组里添加5、6、7这样就可以处理更高的等级了,而你的代码就需要添加128、256这样取整。http://id3.idqqimg.com/id/level/img/crown.png 皇冠http://id3.idqqimg.com/id/level/img/sun.png 太阳http://id3.idqqimg.com/id/level/img/moon.png 月亮http://id3.idqqimg.com/id/level/img/star.png 星星 重新改进了一下:$a = base_convert(85,10,4); //85为数字等级$b = array('star','moon','sun','crown');$e = strlen($a);for($i=0;$i<$e;$i++) echo str_repeat('<img src="http://id3.idqqimg.com/id/level/img/'.$b[$e-$i-1].'.png" />',(int)substr($a,$i,1));这次复制直接运行就可以正常显示了 paypal返回值 php下这两段代码哪个更优啊?! 如何测试内存的使用情况? 文件读取?? 请教如何写下载的链接 /(\d+)|(\w+)/,或的匹配结果会存储为不同数组键值,能否统一? 多项选择框的SQL传递,高人一定请进入. 求助正则表达式:以模式后为/或字符串结束 IIS, PHP4,运行程序出现Warning: Unexpected character in input, 怎么办? 向高手请教php的问题? PHP 5.4.10和PHP 5.3.20发布 PHP关于键值的问题,向大家求教
die(file_get_contents("http://id.qq.com/level/img/$_GET[img].png"));
}
$a = base_convert(85,10,4); //85为数字等级
$b = array(1=>'star',2=>'moon',3=>'sun',4=>'crown');
$e = strlen($a);
for($i=0;$i<$e;$i++){
$c = (int)substr($a,$i,1);
if($c>0) for($d=0;$d<$c;$d++) echo '<img src="?img='.$b[$e-$i].'" />';
}
为什么要把东西写的那么复杂,。。<?php
function qqdj($nowlevel)
{
/*星星1 月亮4 太阳16 皇冠64 */
$a = $b = $c = $d = 0;
$d = floor($nowlevel/64);
$dj= $nowlevel%64;
$c = floor($dj/16);
$dj = $dj%16;
$b = floor($dj/4);
$a = $dj%4;
return array($a,$b,$c,$d);
}
$dj = 37;
$dj = 71;
$arr = qqdj($dj);
print_r($arr);
<?php
function qqdj($nowlevel)
{
/*星星1 月亮4 太阳16 皇冠64 */
$a = $b = $c = $d = 0;
$d = floor($nowlevel/64);
$dj= $nowlevel%64;
$c = floor($dj/16);
$dj = $dj%16;
$b = floor($dj/4);
$a = $dj%4;
return array($a,$b,$c,$d);
}function qqdjImg($nowlevel)
{
/*星星1 月亮4 太阳16 皇冠64 */
$arrDJ = array();
$arrDJ[] = floor($nowlevel/64);
$dj= $nowlevel%64;
$arrDJ[] = floor($dj/16);
$dj = $dj%16;
$arrDJ[] = floor($dj/4);
$arrDJ[] = $dj%4;
$arrImg = array(
'<img src="http://id.qq.com/level/img/crown.png" />',
'<img src="http://id.qq.com/level/img/sun.png" />',
'<img src="http://id.qq.com/level/img/moon.png" />',
'<img src="http://id.qq.com/level/img/star.png" />',
);
$html = '';
foreach ($arrDJ as $k => $v)
{
$html .= str_repeat($arrImg[$k],$v);
}
print_r($arrDJ);
return $html;
}$dj = 37;
$dj = 71;
echo qqdjImg($dj);/*
X-Powered-By: PHP/5.2.0
Content-type: text/htmlArray
(
[0] => 1
[1] => 0
[2] => 1
[3] => 3
)
<img src="http://id.qq.com/level/img/crown.png" /><img src="http://id.qq.com/level/img/moon.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" /><img src="http://id.qq.com/level/img/star.png" />
*/
貌似用base_convert比floor要简单些,虽然返回的是字符串,你的是数组。更正一下图片地址,这只是讨论这个代码的实现,至于怎么采集等级不在讨论范围,比如一些论坛也有类似的等级显示,用我的代码的话只需要在图片数组里添加5、6、7这样就可以处理更高的等级了,而你的代码就需要添加128、256这样取整。http://id3.idqqimg.com/id/level/img/crown.png 皇冠
http://id3.idqqimg.com/id/level/img/sun.png 太阳
http://id3.idqqimg.com/id/level/img/moon.png 月亮
http://id3.idqqimg.com/id/level/img/star.png 星星
$b = array('star','moon','sun','crown');
$e = strlen($a);
for($i=0;$i<$e;$i++) echo str_repeat('<img src="http://id3.idqqimg.com/id/level/img/'.$b[$e-$i-1].'.png" />',(int)substr($a,$i,1));
这次复制直接运行就可以正常显示了