1. 字符串转换为数组(主要用于把分隔符调整到第二个参数)
/**
* [os_Str2arr 字符串转换为数组]
* 主要用于把分隔符调整到第二个参数
* @param [type] $str [要分割的字符串]
* @param string $glue [分割符]
* @return [type] [description]
*/
function os_Str2arr($str, $glue = ','){
return explode($glue, $str);
}
2. 数组转换为字符串(主要用于把分隔符调整到第二个参数)
/**
* [os_Arr2str 数组转换为字符串]
* 主要用于把分隔符调整到第二个参数
* @param [type] $arr [要连接的数组]
* @param string $glue [分割符]
* @return [type] [description]
*/
function os_Arr2str($arr, $glue = ','){
return implode($glue, $arr);
}
3. 转为一维数组(不管几维数组,都转为一维数组)
/**
* [os_ArrayChange 转为一维数组]
* @param [type] $arr [数组数据]
* @return [type] [description]
*/
function os_ArrayChange($arr){
static $arr2;
foreach($arr as $v){
if(is_array($v)){
arrayChange($v);
}else{
$arr2[]=$v;
}
}
return $arr2;
}
4. 友好的时间显示
/**
* [os_Date 友好的时间显示]
* @param [type] $sTime [待显示的时间]
* @param string $type [类型. normal | mohu | full | ymd | other]
* @return [type] [description]
*/
function os_Date($sTime,$type = 'normal') {
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime = time();
$dTime = $cTime - $sTime;
$dDay = intval(date("z",$cTime)) - intval(date("z",$sTime));
//$dDay = intval($dTime/3600/24);
$dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime));
//normal:n秒前,n分钟前,n小时前,日期
if($type=='normal'){
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
//今天的数据.年份相同.日期相同.
}elseif( $dYear==0 && $dDay == 0 ){
//return intval($dTime/3600)."小时前";
return '今天'.date('H:i',$sTime);
}elseif($dYear==0){
return date("m月d日 H:i",$sTime);
}else{
return date("Y-m-d H:i",$sTime);
}
}elseif($type=='mohu'){
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif( $dDay > 0 && $dDay<=7 ){
return intval($dDay)."天前";
}elseif( $dDay > 7 && $dDay <= 30 ){
return intval($dDay/7) . '周前';
}elseif( $dDay > 30 ){
return intval($dDay/30) . '个月前';
}
//full: Y-m-d , H:i:s
}elseif($type=='full'){
return date("Y-m-d , H:i:s",$sTime);
}elseif($type=='ymd'){
return date("Y-m-d",$sTime);
}else{
if( $dTime < 60 ){
return $dTime."秒前";
}elseif( $dTime < 3600 ){
return intval($dTime/60)."分钟前";
}elseif( $dTime >= 3600 && $dDay == 0 ){
return intval($dTime/3600)."小时前";
}elseif($dYear==0){
return date("Y-m-d H:i:s",$sTime);
}else{
return date("Y-m-d H:i:s",$sTime);
}
}
}
5. 时间戳转普通时间
/**
* [os_Time 时间戳转普通时间]
* @param [type] $res [时间戳]
* @param string $lei [时间格式]
* @return [type] [description]
*/
function os_Time($res,$lei='Y-m-d H:i:s'){
return date($lei,$res);
}
6. 生成随机字符
/**
* [os_Random 生成随机字符]
* @param integer $len [产生字符串的长度]
* @param integer $type [类型. 默认和0为大小写字母和数字 | 1小写字母 | 2大写字母 | 3数字 | 4大小写字母 | 5小写字母和数字 | 6大写字母和数字]
* @return [string] [随机字符串]
*/
function os_Random($len = 6,$type = 0) {
$chars_a = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
$chars_b = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$chars_c = "0,1,2,3,4,5,6,7,8,9";
$chars_d = '';
if($type==0){//全部字符串(大小写字母和数字)
$chars_d = $chars_a.",".$chars_b.",".$chars_c;
}
if ($type==1) {//小写字母
$chars_d = $chars_a;
}
if ($type==2) {//大写字母
$chars_d = $chars_b;
}
if ($type==3) {//数字
$chars_d = $chars_c;
}
if ($type==4) {//大小写字母
$chars_d = $chars_a.",".$chars_b;
}
if ($type==5) {//小写字母和数字
$chars_d = $chars_a.",".$chars_c;
}
if ($type==6) {//大写字母和数字
$chars_d = $chars_b.",".$chars_c;
}
$chars_data = explode(',', $chars_d);
$charsLen = count($chars_data) - 1;
shuffle($chars_data); // 将数组打乱
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars_data[mt_rand(0, $charsLen)];
}
return $output;
}
7. 过滤特殊字符
/**
* [os_Filter 过滤特殊字符]
* @param [type] $str [需要过滤的字符]
* @return [type] [description]
*/
function os_Filter($str) {
if($str){
$name = $str;
$name = preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $name);
$name = preg_replace('/xE0[x80-x9F][x80-xBF]‘.‘|xED[xA0-xBF][x80-xBF]/S','?', $name);
$return = json_decode(preg_replace("#(\\\ud[0-9a-f]{3})#ie","",json_encode($name)));
if(!$return){
return $this->jsonName($return);
}
}else{
$return = '';
}
return $return;
}
8. 处理Emoji数据
/**
* [os_Emoji 处理Emoji数据]
* @param [type] $str [description]
* @param integer $type [类型. 0转为HTML | 1转为emoji码]
* @return [type] [description]
*/
function os_Emoji($str, $type = 1){
if ($type == 0) {
$str = (str_replace('\\', '|', json_encode($str)));
} else {
$txt = json_decode(str_replace('|', '\\', $str));
if ($txt !== null) {
$str = $txt;
} else {
$str = '未知';
}
}
return $str;
}
9. 数据转数组
/**
* [os_JsonArray 数据转数组]
* 将数据先转换成json,然后转成array
* @param [type] $result [需要转的数据]
* @return [type] [description]
*/
function os_JsonArray($result)
{
$result_json=json_encode($result);
return json_decode($result_json,true);
}
10. 获取文件名后缀
/**
* [os_FileSuffix 获取文件名后缀]
* @param [type] $fileName [文件名]
* @return [type] [description]
*/
function os_FileSuffix($fileName) {
return strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
}
11. 格式化字节大小
/**
* [os_Bytes 格式化字节大小]
* @param [type] $size [字节数]
* @param string $delimiter [数字和单位分隔符]
* @return [type] [格式化后的带单位的大小]
*/
function os_Bytes($size, $delimiter = '') {
$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
return round($size, 2) . $delimiter . $units[$i];
}
12. 将电子邮件地址转为字符实体
/**
* [os_EncodeEmail 将电子邮件地址转为字符实体]
* 以防止被垃圾邮件程序收集
* @param string $email [电子邮件地址]
* @param string $linkText [description]
* @param string $attrs [description]
* @return [type] [description]
*/
function os_EncodeEmail($email='kf@tcwlxx.com', $linkText='Contact Us', $attrs ='class="emailencoder"' ){
$email = str_replace('@', '@', $email);
$email = str_replace('.', '.', $email);
$email = str_split($email, 5);
$linkText = str_replace('@', '@', $linkText);
$linkText = str_replace('.', '.', $linkText);
$linkText = str_split($linkText, 5);
$part1 = '<、a href="ma';
$part2 = 'ilto:';
$part3 = '" '. $attrs .' >';
$part4 = '<、/a>';
$encoded = '<、script type="text/javascript">';
$encoded .= "document.write('$part1');";
$encoded .= "document.write('$part2');";
foreach($email as $e){
$encoded .= "document.write('$e');";
}
$encoded .= "document.write('$part3');";
foreach($linkText as $l)
{
$encoded .= "document.write('$l');";
}
$encoded .= "document.write('$part4');";
$encoded .= '<、/script>';
return $encoded;
}
13. 验证邮件地址
/**
* [os_ValidEmail 验证邮件地址]
* 除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录
* @param [type] $email [电子邮箱地址]
* @param boolean $test_mx [是否检查]
* @return [type] [description]
*/
function os_ValidEmail($email, $test_mx = false){
if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)){
if($test_mx){
list($username, $domain) = split("@", $email);
return getmxrr($domain, $mxrecords);
}else{
return true;
}
}else{
return false;
}
}
14. 友好的日志缩略名
/**
* [os_CreateSlug 友好的日志缩略名]
* @param [type] $string [description]
* @return [type] [description]
*/
function os_CreateSlug($string){
return preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
}
15. 根据生日计算年龄
/**
* [os_Age 根据生日计算年龄]
* @param [type] $date [description]
* @return [type] [description]
*/
function os_Age($date) {
$year_diff = '';
$time = strtotime($date);
if ( false === $time ) {
return '';
}
$date = date('Y-m-d', $time);
list($year, $month, $day) = explode('-', $date);
$year_diff = date('Y') - $year;
$month_diff = date('m') - $month;
$day_diff = date('d') - $day;
if ( $day_diff < 0 || $month_diff < 0 ) {
$year_diff--;
}
return $year_diff;
}
16. 防止SQL注入
/**
* [os_SqlCheck 防止SQL注入]
* @param [type] $sql_str [description]
* @return [type] [description]
*/
function os_SqlCheck($sql_str) {
$check = preg_match('/select|insert|update|delete|or|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/', $sql_str);
if ($check) {
echo '非法字符!!';
exit;
} else {
return $sql_str;
}
}
说明:部分函数是从网上拷贝后,放在我的库里的,并非由我原创。
感谢那些大佬的分享和奉献。