php加密解密算法,也可以用于短域名生成

<?php
// 加密:
function string_secret($string)
{
    $key = "yadgen";

    //密锁串,不能出现重复字符,内有A-Z,a-z,0-9,/,=,+,_,
    $lockstream = 'st=lDEFABCNOPyzghi_jQRST-UwxkVWXYZabcdef+IJK6/7nopqr89LMmGH012345uv';
    //随机找一个数字,并从密锁串中找到一个密锁值
    $lockLen = strlen($lockstream);
    $lockCount = rand(0,$lockLen-1);
    $randomLock = $lockstream[$lockCount];
    //结合随机密锁值生成MD5后的密码
    $password = md5($key.$randomLock);
    //开始对字符串加密
    $txtStream = base64_encode($string);
    $tmpStream = '';
    $i=0;$j=0;$k = 0;
    for ($i=0; $i<strlen($txtStream); $i++) {
        $k = ($k == strlen($password)) ? 0 : $k;
        $j = (strpos($lockstream,$txtStream[$i])+$lockCount+ord($password[$k]))%($lockLen);
        $tmpStream .= $lockstream[$j];
        $k++;
    }
    return $tmpStream.$randomLock;
}

// 解密:
function secret_string($string)
{
    $key = "yadgen";

    //密锁串,不能出现重复字符,内有A-Z,a-z,0-9,/,=,+,_,
    $lockstream = 'st=lDEFABCNOPyzghi_jQRST-UwxkVWXYZabcdef+IJK6/7nopqr89LMmGH012345uv';

    $lockLen = strlen($lockstream);
    //获得字符串长度
    $txtLen = strlen($string);
    //截取随机密锁值
    $randomLock = $string[$txtLen - 1];
    //获得随机密码值的位置
    $lockCount = strpos($lockstream,$randomLock);
    //结合随机密锁值生成MD5后的密码
    $password = md5($key.$randomLock);
    //开始对字符串解密
    $txtStream = substr($string,0,$txtLen-1);
    $tmpStream = '';
    $i=0;$j=0;$k = 0;
    for($i=0; $i<strlen($txtStream); $i++){
        $k = ($k == strlen($password)) ? 0 : $k;
        $j = strpos($lockstream,$txtStream[$i]) - $lockCount - ord($password[$k]);
        while($j < 0){
            $j = $j + ($lockLen);
        }
        $tmpStream .= $lockstream[$j];
        $k++;
    }
    return base64_decode($tmpStream);
}
?>

 

Javascript PHP 判断是否是微信浏览器

Javascript:

function is_weixn(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=="micromessenger") {
        return true;
    } else {
        return false;
    }
}

PHP:

<?php
function is_weixin(){
    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
            return true;
    }  
    return false;
}
?>

 

PHP显示前天,昨天,今天,几天前

<?php
function tranTime($time) {
    $rtime = date("m-d H:i",$time);
    $rtime2 = date("Y-m-d H:i",$time);
    $htime = date("H:i",$time);
    $time = time() - $time;
    if ($time < 60) {
        $str = '刚刚';
    } elseif ($time < 60 * 60) {
        $min = floor($time/60);
        $str = $min.' 分钟前';
    } elseif ($time < 60 * 60 * 24) {
        $h = floor($time/(60*60));
        $str = $h.'小时前 '.$htime;
    } elseif ($time < 60 * 60 * 24 * 3) {
        $d = floor($time/(60*60*24));
        if($d==1)
           $str = '昨天 '.$htime;
        else
           $str = '前天 '.$htime;
    } elseif ($time < 60 * 60 * 24 * 7) {
        $d = floor($time/(60*60*24));
           $str = $d.' 天前 '.$htime;
    } elseif ($time < 60 * 60 * 24 * 30) {
        $str = $rtime;
    } else {
        $str = $rtime2;
    }
    return $str;
}
$w_time = time() - 3600;
$times = tranTime($w_time);
echo $times;
?>

 

php秒数转换成多少天/多少小时/多少分

function get_stay_time($timestamp, $is_hour = 1, $is_minutes = 1)
{
    if(empty($timestamp) || $timestamp <= 60) {
        return false;
    }

    $time = time();
    $remain_time = $time - $timestamp;

    $day = floor($remain_time / (3600*24));
    $day = $day > 0 ? $day.'天' : '';
    $hour = floor(($remain_time % (3600*24)) / 3600);
    $hour = $hour > 0 ? $hour.'小时' : '';
    if($is_hour && $is_minutes) {
        $minutes = floor((($remain_time % (3600*24)) % 3600) / 60);
        $minutes = $minutes > 0 ? $minutes.'分' : '';
        return $day.$hour.$minutes;
    }

    if($hour) {
        return $day.$hour;
    }
    return $day;
}

PHP获取一年中的每星期的开始日期和结束日期

<?php
function get_week($year) { 
    $year_start = $year . "-01-01"; 
    $year_end = $year . "-12-31"; 
    $startday = strtotime($year_start); 
    if (intval(date('N', $startday)) != '1') { 
        $startday = strtotime("next monday", strtotime($year_start)); //获取年第一周的日期 
    } 
    $year_mondy = date("Y-m-d", $startday); //获取年第一周的日期 
 
    $endday = strtotime($year_end); 
    if (intval(date('W', $endday)) == '7') { 
        $endday = strtotime("last sunday", strtotime($year_end)); 
    } 
 
    $num = intval(date('W', $endday)); 
    for ($i = 1; $i <= $num; $i++) { 
        $j = $i -1; 
        $start_date = date("Y-m-d", strtotime("$year_mondy $j week ")); 
 
        $end_day = date("Y-m-d", strtotime("$start_date +6 day")); 
 
        $week_array[$i] = array ( 
            str_replace("-", 
            ".", 
            $start_date 
        ), str_replace("-", ".", $end_day)); 
    } 
    return $week_array; 
}
?>
函数get_week()通过传入参数$year年份,获取当年第一天和最后一天所在的周数,计算第一周的日期,通过循环获取每一周的第一天和最后一天的日期。最后返回是一个数组。
想得到指定周数的开始日期和结束日期,比如2011年第18周的开始日期和结束日期,代码如下:
<?php
$weeks = get_week(2011); 
echo '第18周开始日期:'.$weeks[18][0].''; 
echo '第18周结束日期:'.$weeks[18][1]; 
?>

最后输出结果:

第18周开始日期:2011.05.02 
第18周结束日期:2011.05.08

原文链接:http://www.helloweba.com/view-blog-125.html

P​H​P​过​滤​H​T​M​L​代​码​,空​格,回​车​,换​行​符​的​函​数

PHP 清除HTML代码、空格、回车换行符的函数发布: 在写采集程序时,往往需要对采集回来的内容进行处理,比如删除HTML代码、去掉多余的空格、删除回车换行符等等。下面就写一个函数来处理。

<?php
function delete_html($str)
{
    $str = trim($str);
    $str = strip_tags($str, "");
    $str = str_replace("t", "", $str);
    $str = str_replace("rn", "", $str);
    $str = str_replace("r", "", $str);
    $str = str_replace("n", "", $str);
    $str = str_replace(" ", " ", $str);
    $str = str_replace(" ", " ", $str);

    return trim($str);
}
?>

可以根据需要对这个函数进行扩充修改。

PHP从5.2升级到5.3/5.4/5.5后本地访问变慢

最近一直发现本地访问变慢,有时候甚至出现卡死现象,最快解决方法只有重新Apache,但只是临时的,很纠结,今天决定解决下。
后经谷歌搜索,发现有不少人出现此类问题。
平常我们本地连接数据库都会写成:

$host = 'localhost';

写法没错,但是PHP5.3版本以后会考虑是IPV4还是IPV6,,面对localhost会考虑,因此出现响应时间长的问题。
解决方法如下:

$host = '127.0.0.1';

这样访问速度会出现质的变化。

PHP 递归生成 option

<?php
/**
 *
 * $parent_id 父id,用于获取每级数据
 * $selected_id 当前需要选中的option
 */
function tree_options($parent_id = 0, $selected_id = 0)
{
    $options = '';

    $where = array(
        'parent_id' => $parent_id,
    );
    $data_list = "这里获取数据库结果集";
    if ($data_list) {
        foreach ($data_list as $data) {
            $selected = '';
            if ($selected_id == $data['id']) {
                $selected = 'selected';
            }

            $options .= "<option ".$selected." value=".$data['id'].""; $options .= ">".str_repeat('  ', $data['tree_level']*3).'>'.$data['option_name']."";
            $options .= $this->tree_options($data['id'], $selected_id);
        }
    }

    return $options;
}
?>