13个PHP函数超实用


Posted in Javascript onOctober 21, 2015

1、PHP加密解密

PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密。

function encryptDecrypt($key, $string, $decrypt){ 
  if($decrypt){ 
    $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12"); 
    return $decrypted; 
  }else{ 
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); 
    return $encrypted; 
  } 
}

使用方法如下:

//以下是将字符串“Helloweba欢迎您”分别加密和解密
//加密:
echo encryptDecrypt('password', '3water欢迎您',0);
//解密:
echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);

2、PHP生成随机字符串

当我们需要生成一个随机名字,临时密码等字符串时可以用到下面的函数:

function generateRandomString($length = 10) { 
  $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
  $randomString = ''; 
  for ($i = 0; $i < $length; $i++) { 
    $randomString .= $characters[rand(0, strlen($characters) - 1)]; 
  } 
  return $randomString; 
}

使用方法如下:

echo generateRandomString(20);

3、PHP获取文件扩展名(后缀)

以下函数可以快速获取文件的扩展名即后缀。

function getExtension($filename){ 
 $myext = substr($filename, strrpos($filename, '.')); 
 return str_replace('.','',$myext); 
}

使用方法如下:

$filename = '我的文档.doc'; 
echo getExtension($filename);

4、PHP获取文件大小并格式化

以下使用的函数可以获取文件的大小,并且转换成便于阅读的KB,MB等格式。

function formatSize($size) { 
  $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); 
  if ($size == 0) { 
    return('n/a'); 
  } else { 
   return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); 
  } 
}

使用方法如下:

$thefile = filesize('test_file.mp3'); 
echo formatSize($thefile);

5、PHP替换标签字符

有时我们需要将字符串、模板标签替换成指定的内容,可以用到下面的函数:

function stringParser($string,$replacer){ 
  $result = str_replace(array_keys($replacer), array_values($replacer),$string); 
  return $result; 
}

使用方法如下:

$string = 'The {b}anchor text{/b} is the {b}actual word{/b} or words used {br}to describe the link {br}itself'; 
$replace_array = array('{b}' => '<b>','{/b}' => '</b>','{br}' => '<br />'); 
echo stringParser($string,$replace_array);

6、PHP列出目录下的文件名

如果你想列出目录下的所有文件,使用以下代码即可:

function listDirFiles($DirPath){ 
  if($dir = opendir($DirPath)){ 
     while(($file = readdir($dir))!== false){ 
        if(!is_dir($DirPath.$file)) 
        { 
          echo "filename: $file<br />"; 
        } 
     } 
  } 
}

使用方法如下:

listDirFiles('home/some_folder/');

7、PHP获取当前页面URL

以下函数可以获取当前页面的URL,不管是http还是https。

function curPageURL() { 
  $pageURL = 'http'; 
  if (!empty($_SERVER['HTTPS'])) {$pageURL .= "s";} 
  $pageURL .= "://"; 
  if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
  } else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
  } 
  return $pageURL; 
}

使用方法如下:

echo curPageURL();

8、PHP强制下载文件

有时我们不想让浏览器直接打开文件,如PDF文件,而是要直接下载文件,那么以下函数可以强制下载文件,函数中使用了application/octet-stream头类型。

function download($filename){ 
  if ((isset($filename))&&(file_exists($filename))){ 
    header("Content-length: ".filesize($filename)); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="' . $filename . '"'); 
    readfile("$filename"); 
  } else { 
    echo "Looks like file does not exist!"; 
  } 
}

使用方法如下:

download('/down/test_45f73e852.zip');

9、PHP截取字符串长度

我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用…表示,以下函数可以满足你的需求。

/* 
 Utf-8、gb2312都支持的汉字截取函数 
 cut_str(字符串, 截取长度, 开始长度, 编码); 
 编码默认为 utf-8 
 开始长度默认为 0 
*/ 
function cutStr($string, $sublen, $start = 0, $code = 'UTF-8'){ 
  if($code == 'UTF-8'){ 
    $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
    preg_match_all($pa, $string, $t_string); 

    if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; 
    return join('', array_slice($t_string[0], $start, $sublen)); 
  }else{ 
    $start = $start*2; 
    $sublen = $sublen*2; 
    $strlen = strlen($string); 
    $tmpstr = ''; 

    for($i=0; $i<$strlen; $i++){ 
      if($i>=$start && $i<($start+$sublen)){ 
        if(ord(substr($string, $i, 1))>129){ 
          $tmpstr.= substr($string, $i, 2); 
        }else{ 
          $tmpstr.= substr($string, $i, 1); 
        } 
      } 
      if(ord(substr($string, $i, 1))>129) $i++; 
    } 
    if(strlen($tmpstr)<$strlen ) $tmpstr.= "..."; 
    return $tmpstr; 
  } 
}

使用方法如下:

$str = "jQuery插件实现的加载图片和页面效果"; 
echo cutStr($str,16);

10、PHP获取客户端真实IP

我们经常要用数据库记录用户的IP,以下代码可以获取客户端真实的IP:

//获取用户真实IP 
function getIp() { 
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
    $ip = getenv("HTTP_CLIENT_IP"); 
  else 
    if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
      $ip = getenv("HTTP_X_FORWARDED_FOR"); 
    else 
      if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
        $ip = getenv("REMOTE_ADDR"); 
      else 
        if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
          $ip = $_SERVER['REMOTE_ADDR']; 
        else 
          $ip = "unknown"; 
  return ($ip); 
}

使用方法如下:

echo getIp();

11、PHP防止SQL注入

我们在查询数据库时,出于安全考虑,需要过滤一些非法字符防止SQL恶意注入,请看一下函数:

function injCheck($sql_str) { 
  $check = preg_match('/select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/', $sql_str); 
  if ($check) { 
    echo '非法字符!!'; 
    exit; 
  } else { 
    return $sql_str; 
  } 
}

使用方法如下:

echo injCheck('1 or 1=1');

12、PHP页面提示与跳转

我们在进行表单操作时,有时为了友好需要提示用户操作结果,并跳转到相关页面,请看以下函数:

function message($msgTitle,$message,$jumpUrl){ 
  $str = '<!DOCTYPE HTML>'; 
  $str .= '<html>'; 
  $str .= '<head>'; 
  $str .= '<meta charset="utf-8">'; 
  $str .= '<title>页面提示</title>'; 
  $str .= '<style type="text/css">'; 
  $str .= '*{margin:0; padding:0}a{color:#369; text-decoration:none;}a:hover{text-decoration:underline}body{height:100%; font:12px/18px Tahoma, Arial, sans-serif; color:#424242; background:#fff}.message{width:450px; height:120px; margin:16% auto; border:1px solid #99b1c4; background:#ecf7fb}.message h3{height:28px; line-height:28px; background:#2c91c6; text-align:center; color:#fff; font-size:14px}.msg_txt{padding:10px; margin-top:8px}.msg_txt h4{line-height:26px; font-size:14px}.msg_txt h4.red{color:#f30}.msg_txt p{line-height:22px}'; 
  $str .= '</style>'; 
  $str .= '</head>'; 
  $str .= '<body>'; 
  $str .= '<div>'; 
  $str .= '<h3>'.$msgTitle.'</h3>'; 
  $str .= '<div>'; 
  $str .= '<h4>'.$message.'</h4>'; 
  $str .= '<p>系统将在 <span style="color:blue;font-weight:bold">3</span> 秒后自动跳转,如果不想等待,直接点击 <a href="{$jumpUrl}">这里</a> 跳转</p>'; 
  $str .= "<script>setTimeout('location.replace(\'".$jumpUrl."\')',2000)</script>"; 
  $str .= '</div>'; 
  $str .= '</div>'; 
  $str .= '</body>'; 
  $str .= '</html>'; 
  echo $str; 
}

使用方法如下:

message('操作提示','操作成功!','https://3water.com');
13、PHP计算时长

我们在处理时间时,需要计算当前时间距离某个时间点的时长,如计算客户端运行时长,通常用hh:mm:ss表示。

function changeTimeType($seconds) { 
  if ($seconds > 3600) { 
    $hours = intval($seconds / 3600); 
    $minutes = $seconds % 3600; 
    $time = $hours . ":" . gmstrftime('%M:%S', $minutes); 
  } else { 
    $time = gmstrftime('%H:%M:%S', $seconds); 
  } 
  return $time; 
}

使用方法如下:

$seconds = 3712; 
echo changeTimeType($seconds);

以上就是本文的全部内容,这13个php函数代码是不是很精彩,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
jQuery动画特效实例教程
Aug 29 Javascript
JavaScript学习笔记之Cookie对象
Jan 22 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
微信小程序 点击控件后选中其它反选实例详解
Feb 21 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
JavaScript对HTML DOM使用EventListener进行操作
Oct 21 #Javascript
JavaScript对象数组的排序处理方法
Oct 21 #Javascript
Javascript刷新窗口方法小结
Oct 21 #Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 #Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 #Javascript
JavaScript函数的调用以及参数传递
Oct 21 #Javascript
Java中Timer的用法详解
Oct 21 #Javascript
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
php之curl设置超时实例
2014/11/03 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
vue element项目引入icon图标的方法
2018/06/06 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
极简的Python入门指引
2015/04/01 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
基于python代码批量处理图片resize
2020/06/04 Python
如何理解python对象
2020/06/21 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
小学生读书感言
2014/02/12 职场文书
《大海那边》教学反思
2014/04/09 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
《给予树》教学反思
2016/03/03 职场文书