登录后台

页面导航

本文编写于 105 天前,最后修改于 105 天前,其中某些信息可能已经过时。

1.利用Mcrypt扩展进行加密、解密字符串

function myCrypt($key,$str){
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND);


    return mcrypt_encrypt(MCRYPT_DES,$key,$str, MCRYPT_MODE_ECB,$iv);
}

function myDecrypt($key,$en_str){
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND);

    return mcrypt_decrypt(MCRYPT_DES,$key,$en_str, MCRYPT_MODE_ECB,$iv);
}

2.求数组中的最大值

function getArrayMax($arr) {
    $pos = array_search(max($arr), $arr);
    return $arr[$pos];
}

3.求数组中的最小值

function getArrayMin($arr) {
    $pos = array_search(min($arr), $arr);
    return $arr[$pos];
}

4.获取距离今天以前的前30天的时间日期格式的数组

function get30days () {
    $today = date('Y-m-d',strtotime('-1 day'));
    $days = array();
    for($i=1; $i<=30; ++$i) {
        $days[] = date('Y-m-d', strtotime('-'.$i.' day'));
    }
    return $days;
}

5.获取某个月的第一天

function getMonthFirstDay($date) {
    return date('Y-m-01', strtotime($date));
}

6.获取某个月的最后一天

function getMonthLastDay($date) {
    return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' +1 month -1 day'));
}

7.PHP对象转数组函数

/**
 * PHP对象(stdClass)转数组
 */
function object_to_array($obj) { 
    $_arr= is_object($obj) ? get_object_vars($obj) : $obj; 
    foreach($_arr as $key=> $val) { 
        $val= (is_array($val) || is_object($val)) ?       object_to_array($val) : $val; 
        $arr[$key] = $val; 
    } 
    return $arr; 
}

8.PHP数组转XML格式字符串, 通常在ajax请求, 需要返回xml格式数据时使用

$xml = simplexml_load_string('<ZellDincht />');
function create($arr, $xml) {
    foreach($arr as $k=>$v) {
        if(is_array($v)) {
            $x = $xml->addChild($k);
            create($v, $x);
        }else $xml->addChild($k, $v);
    }
}
$_username = $_GET['username'];
$_comment = $_GET['content'];
$data = array("username"=>$_username,"comment"=>$_comment);
create($data, $xml);
echo $xml->saveXML();

9.xml字符串转数组

function simplest_xml_to_array($xmlstring) {//$xmlstring是xml字符串
    return json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);
}
$array = simplest_xml_to_array($xml_string);
echo "<pre>";
print_r($array);

10.以下是几个常用正则

/**
 * 判断 国际电话是否OK
 * @param  [type]  $phone [description]
 * @return boolean        [description]
 */
function is_internationalphonenumber($phone) {
    $reg = "/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/im";
    if( preg_match($reg, $phone) ) {
        return true;
    } else {
        return false;
    }
}

/**
 * 判断用户名是否正确
 * my-us3r_n4m3
 * h1s1s-wayt00_l0ngt0beausername (too long)
 * @param  [type]  $username [description]
 * @return boolean           [description]
 */
function is_username($username) {
    $reg = "/^[a-z0-9_-]{3,16}$/";
    if(preg_match($reg, $username)) {
        return true;
    } else {
        return false;
    }
}

/**
 * 判断是否是合格的密码
 * myp4ssw0rd
 * mypa$$w0rd (contains a dollar sign)
 * @param  [type]  $password [description]
 * @return boolean           [description]
 */
function is_password($password) {
    $reg = "/^[a-z0-9_-]{6,18}$/";
    if(preg_match($reg, $password)) {
        return true;
    }else{
        return false;
    }
}

/**
 * is Hex Value
 * #a3c113    right
 * #4d82h4 (contains the letter h)    wrong
 * @param  [type]  $hex_value [description]
 * @return boolean            [description]
 */
function is_hexvalue($hex_value) {
    $reg = "/^#?([a-f0-9]{6}|[a-f0-9]{3})$/";
    if(preg_match($reg, $hex_value)) {
        return true;
    } else {
        return false;
    }
}

/**
 * 判断是否是 slug --- slug 指形如: word1-word2-word3-word4 格式的字符串
 * my-title-here
 * my_title_here (contains underscores)   wrong
 * @param  [type]  $slug [description]
 * @return boolean       [description]
 */
function is_slug($slug) {
    $reg = "/^[a-z0-9-]+$/";
    if(preg_match($reg, $slug)) {
        return true;
    } else {
        return false;
    }
}

/**
 * 验证IP地址
 * 73.60.124.136 (no, that is not my IP address :P)
 * 256.60.124.136 (the first group must be "25" and a number between zero and five)  wrong
 * @param  [type]  $ip [description]
 * @return boolean     [description]
 */
function is_ip($ip) {
    $reg = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/";
    if(preg_match($reg, $ip)) {
        return true;
    }else{
        return false;
    }
}

/**
 * 验证邮箱email
 * john@doe.com   right
 * john@doe.something (TLD is too long)    wrong
 */
function is_email($email) {
    $reg = "/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/i";
    if( preg_match($reg, $email) ) {
        return true;
    }else{
        return false;
    }
}

/**
 * 验证url地址格式
 * http://net.tutsplus.com/about    right
 * http://google.com/some/file!.html (contains an exclamation point)
 */
function is_url($url) {
    $reg = "/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/i";
    if(preg_match($reg, $url)) {
        return true;
    } else {
        return false;
    }
}
/**
 * 获取IP地址对应的城市
 * @param  [ip string] $ip [description]
 * @return [type]     [description]
 */
if( ! function_exists('get_cityname_by_ip')) {
    function get_city_by_ip($ip){  
        $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;
        $res = @file_get_contents($url);
        if($res === false) {
            $ch = curl_init();
            $timeout = 30;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $res = curl_exec($ch);
            curl_close($ch);
        }
        return json_decode($res,true);
    }    
}
/**
 * 根据某个字段进行排序
 * @param  [array] $list   [操作数组]
 * @param  [string] $field  [字段名称]
 * @param  string $sortby [操作顺序]
 * @return [type]         [排序后的数组]
 */
if( ! function_exists('list_sort_by_column')) {
    function list_sort_by_column($list, $field, $sortby = 'asc')
    {
        if (is_array($list))
        {
            $refer = $resultSet = array();
            foreach ($list as $i => $data)
            {
                $refer[$i] = &$data[$field];
            }
            switch ($sortby)
            {
                case 'asc': // 正向排序
                    asort($refer);
                    break;
                case 'desc': // 逆向排序
                    arsort($refer);
                    break;
                case 'nat': // 自然排序
                    natcasesort($refer);
                    break;
            }
            foreach ($refer as $key => $val)
            {
                $resultSet[] = &$list[$key];
            }
            return $resultSet;
        }
        return false;
    }    
}
/**
 * 创建多级目录函数
 */
if( ! function_exists('mk_dirs')) 
{
    function mk_dirs($dir, $mode=0777) {
        if(is_dir($dir) || @mkdir($dir, $mode)){
            return true;
        }
        if(!mk_dirs(dirname($dir), $mode)){
            return false;
        }
        return @mkdir($dir, $mode);
    }
}