转换avatar头像函数(0 位领导批示)

仅备忘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 获取 avatar 头像
 *
 * @param string $email
 * @param integer $size
 * @return string
 */
function getAvatar($email, $size = '24')
{
	if (!is_numeric($size))
	{
		$size = '24';
	}
	if (!empty($email))
	{
		$out = 'http://www.gravatar.com/avatar/' . md5(strtolower($email)) . '?s=' . $size;
		$avatar = "<img src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' alt='{$email}' /> " . $email;
	}
	else
	{
		$avatar = $email;
	}
 
	return $avatar;
}

正则表达式子模式使用函数(1 位领导批示)

原问题地址: http://bbs.blueidea.com/thread-2944055-1-1.html

比较正确的解决方法:

1
2
3
4
5
<?php
$str="[thunder]ftp://3gset.cn:3gset@down.3gset.cn/谢谢你的温柔-S.H.E_飞轮海.mv.320x240.avi[/thunder]";
$str = preg_replace("/\[thunder\](.[^\[]*)\[\/thunder\]/ie","'<a href=\"thunder://'.base64_encode('\\1').'\">\\1</a>'", $str);
echo htmlspecialchars($str);
?>

这段代码的重点是使用了修饰符 e
正则表达式的修饰符 e 是这么解释的:
如果设置这个修饰符, preg_replace() 将在替换值里进行正常的涉及到 的替换, 等同于在 PHP 代码里面一样, 然后用于替换搜索到的字符串.

全文阅读 »

代码片断(9)(3 位领导批示)

函数:反转数组.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdio.h"
 
void inverse_arr(int *p)
{
    int *q,t;
    q = p+9;
    while(p<q)
    {
        t=*p;
        *p=*q;
        *q=t;
        p++;
        q--;
    }
}
 
void main()
{
    int a[10] = {2,1,5,12,56,111,67,12,56,99};
    int i;
    inverse_arr(a);
    for(i=0;i<10;i++)
    {
        printf(" %d ",a[i]);
    }
}

代码片断(8)(0 位领导批示)

函数:求数组中最大值的下标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int max_arr(int *p)
{
    int k=0,max=*p,i=0;
    for(;i<10;i++)
    {
        if(*(p+i)>max)
        {
            max=*(p+i);
            k=i;
        }
    }
    return k;
}
 
void main()
{
    int a[10] = {2,1,5,12,56,11,67,12,56,99};
    int k,*p=a;
    k=max_arr(a);
    printf("a[%d]=%d",k,*(p+k));
}

代码片断(4)(0 位领导批示)

函数使用..求一个数的阶乘
并运算出n!/(m!*(n-m)!)的结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdio.h"
#include "math.h"
 
float fac(int k)
{
    float t=1;
    int i;
    for(i=2;i<=k;i++) t*=i;
    return t;
}
 
void main()
{
    float c;
    int m,n;
    scanf("%d%d", &m,&n);
    c=fac(n)/(fac(m)*fac(n-m));
    printf("%f",c);
}
Tags : ,

[收集]一个全角半角转换函数(0 位领导批示)

strtr 的效率据说比 str_replace 高四倍.这个全角半角转换函数的核心便是 strtr 函数

函数原型

string strtr (string str, string from, string to) 或 string strtr (string str, array replace_pairs)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
function make_semiangle($str)   
{   
    $arr = array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',   
                 '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',   
                 'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',   
                 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',   
                 'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',   
                 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',   
                 'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',   
                 'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',   
                 'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',   
                 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',   
                 'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',   
                 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',   
                 'y' => 'y', 'z' => 'z',   
                 '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[',   
                 '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']',   
                 '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => '<',   
                 '》' => '>',   
                 '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',   
                 ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.',   
                 ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|',   
                 '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"',   
                 ' ' => ' ' );   
 
    return strtr($str, $arr);   
}
?>

(备忘)自己写的UBB2HTML与HTML2UBB函数(2 位领导批示)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function ubb2html($str)
{
    $str = htmlspecialchars(stripslashes($str));
    // 字体颜色
    $str = preg_replace("#\[color\=([^\]]*)\]([^\[]*)#i","<span style='color:$1'>$2",$str);
    $str = preg_replace("#\[\/color\]#i","</span>",$str);
    // 字体大小
    $str = preg_replace("#\[size\=(\d)\]([^\[]*)#i","<font size='$1'>$2",$str);
    $str = preg_replace("#\[\/size\]#i","</font>",$str);
    // 超链接
    $str = preg_replace("#\[url\=([^\]]*)\]([^\[]*)#i","<a href='$1' target='_blank'>$2",$str);
    $str = preg_replace("#\[\/url\]#i","</a>",$str);
    // 图片
    $str = preg_replace("#\[img\]([^\[]*)\[\/img\]#i","<img src='$1' />",$str);
    // 其它
    $str = preg_replace("#\[([\/]?)b\]#i","<$1strong>",$str);
    $str = preg_replace("#\[([\/]?)i\]#i","<$1i>",$str);
    $str = preg_replace("#\[([\/]?)em\]#i","<$1em>",$str);
    $str = preg_replace("#\[([\/]?)u\]#i","<$1u>",$str);
    return nl2br($str);
}

全文阅读 »

date函数格式化UNIX时间戳时差问题的解决方法(2 位领导批示)

插入数据库里的时间格式是unix时间戳

当再用date函数格式化unix时间戳时发现是格林尼治的时间


$nowtime = time();
$mtime = date('Y-m-d H:i:s',$nowtime);

echo $mtime;

解决方法:

在使用date函数之前先设置默认时区


date_default_timezone_set('Etc/GMT-8');

OK..现在输出的就是东八区的时间了..

Discuz的install文件核心函数(2 位领导批示)

可以将自己写的程序做一个install.php.
Discuz的install文件中的核心函数,相当精简..

  1. <?php
  2. require("connect.inc.php");
  3. $sqlfile = 'test.sql';//sql文件
  4.  
  5. $fp = fopen($sqlfile, 'rb');
  6. $filesize=filesize($sqlfile);
  7. $sql = fread($fp, $filesize);
  8. fclose($fp);
  9. runquery($sql);
  10.  
  11. function runquery($sql) {
  12.     global $lang, $dbcharset, $tablepre, $db;
  13.  
  14.     $sql = str_replace("\r", "\n", str_replace(' cdb_', ' '.$tablepre, $sql));
  15.     $ret = array();
  16.     $num = 0;
  17.     foreach(explode(";\n", trim($sql)) as $query) {
  18.         $queries = explode("\n", trim($query));
  19.         foreach($queries as $query) {
  20.             $ret[$num] .= $query[0] == '#' || $query[0].$query[1] == '--' ? '' : $query;
  21.         }
  22.         $num++;
  23.     }
  24.     unset($sql);
  25.  
  26.     foreach($ret as $query) {
  27.         $query = trim($query);
  28.         if($query) {
  29.             if(substr($query, 0, 12) == 'CREATE TABLE') {
  30.                 $name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query);
  31.                 echo $lang['create_table'].' '.$name.' ... <font color="#0000EE">'.$lang['succeed'].'</font><br>';
  32.                 mysql_query(createtable($query, $dbcharset));
  33.             } else {
  34.                 mysql_query($query);
  35.             }
  36.         }
  37.     }
  38. }
  39. ?>

JS中文字符串转换unicode编码函数(0 位领导批示)

AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数

  1. function uniencode(text)
  2. {
  3.     text = escape(text.toString()).replace(/\+/g, "%2B");
  4.     var matches = text.match(/(%([0-9A-F]{2}))/gi);
  5.     if (matches)
  6.     {
  7.         for (var matchid = 0; matchid < matches.length; matchid++)
  8.         {
  9.             var code = matches[matchid].substring(1,3);
  10.             if (parseInt(code, 16) >= 128)
  11.             {
  12.                 text = text.replace(matches[matchid], '%u00' + code);
  13.             }
  14.         }
  15.     }
  16.     text = text.replace('%25', '%u0025');
  17.  
  18.     return text;
  19. }

当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.

全文阅读 »

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志