当前位置:首页 > PHP教程 > php函数 > 列表

分享自定义的几个PHP功能函数

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 15:21:11 浏览: 评论:0 

这篇文章主要介绍了分享自定义的几个PHP功能函数,本文罗列的都是WEB开发中常用的一些功能函数,例如提交过滤、字符串截取、IP地址匿名化、隐藏文件真实路径等,需要的朋友可以参考下。

最近不是在折腾论坛嘛,各种类各种函数,原创一些,从别人那儿qiang过来一些,在此分享出来,希望有朋友能用的到~

注意:部分函数可能不够完善,由此造成的漏洞风险自担~

提交过滤

  1. function filter($text
  2.  //完全过滤注释 
  3.  $text = preg_replace('/<!--?.*-->/'''$text); 
  4.  //完全过滤js 
  5.  $text = preg_replace('/<script?.*\/script>/'''$text); 
  6.  //过滤危险的属性,如:过滤on事件lang js 
  7.  while (preg_match('/(<[^><]+)( lang|action|background|codebase|dynsrc|lowsrc)[^><]+/i'$text$mat)) { 
  8.  $text = str_replace($mat[0], $mat[1], $text); 
  9.  } 
  10.  while (preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i'$text$mat)) { 
  11.  $text = str_replace($mat[0], $mat[1] . $mat[3], $text); 
  12.  } 
  13.  //过滤多余html 
  14.  $text = preg_replace('/<\/?(html|head|meta|link|base|basefont|body|bgsound|script|form|iframe|frame|frameset|applet|id|ilayer|layer|name|script|xml)[^><]*>/i'''$text); 
  15.  //反转换 
  16.  $text = str_replace('[''<'$text); 
  17.  $text = str_replace(']''>'$text); 
  18.  $text = str_replace('|''"'$text); 
  19.  return $text

提交过滤2

  1. function stripslashes_array(&$array
  2.  while (list($key$var) = each($array)) { 
  3.  if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || '' . intval($key) == "$key")) { 
  4.  if (is_string($var)) { 
  5.  $array[$key] = stripslashes($var); 
  6.  } 
  7.  if (is_array($var)) { 
  8.  $array[$key] = stripslashes_array($var); 
  9.  } 
  10.  } 
  11.  } 
  12.  return $array

字符串截取(这个是emlog里提出来的,其实也就是substr的增强版)

  1. function subString($strings$start$length
  2.  if (function_exists('mb_substr') && function_exists('mb_strlen')) { 
  3.  $sub_str = mb_substr($strings$start$length'utf8'); 
  4.  return mb_strlen($sub_str'utf8') < mb_strlen($strings'utf8') ? $sub_str . '...' : $sub_str
  5.  } 
  6.  $str = substr($strings$start$length); 
  7.  $char = 0; 
  8.  for ($i = 0; $i < strlen($str); $i++) { 
  9.  if (ord($str[$i]) >= 128) 
  10.  $char++; 
  11.  } 
  12.  $str2 = substr($strings$start$length + 1); 
  13.  $str3 = substr($strings$start$length + 2); 
  14.  if ($char % 3 == 1) { 
  15.  if ($length <= strlen($strings)) { 
  16.  $str3 = $str3 .= '...'
  17.  } 
  18.  return $str3
  19.  } 
  20.  if ($char % 3 == 2) { 
  21.  if ($length <= strlen($strings)) { 
  22.  $str2 = $str2 .= '...'
  23.  } 
  24.  return $str2
  25.  } 
  26.  if ($char % 3 == 0) { 
  27.  if ($length <= strlen($strings)) { 
  28.  $str = $str .= '...'
  29.  } 
  30.  return $str
  31.  } 

IP地址匿名化(最后一位替换为星号)

  1. function AnonymousIP()  
  2.  $ip = GetIP(); 
  3.  if ($ip == "Unknown") { 
  4.  $removed_ip = "未知用户"
  5.  } 
  6.  if (strpos($ip":")) { 
  7.  $removed_ip = "IPv6用户"
  8.  } else { 
  9.  $reg1 = '/((?:\d+\.){3})\d+/'
  10.  $reg2 = '~(\d+)\.(\d+)\.(\d+)\.(\d+)~'
  11.  $removed_ip = preg_replace($reg1"\\1*"$ip); 
  12.  } 
  13.  return $removed_ip

获取客户端IP地址

  1. function GetIP() 
  2.  if (@$_SERVER["HTTP_X_FORWARDED_FOR"]) 
  3.  $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
  4.  else if (@$_SERVER["HTTP_CLIENT_IP"]) 
  5.  $ip = $_SERVER["HTTP_CLIENT_IP"]; 
  6.  else if (@$_SERVER["REMOTE_ADDR"]) 
  7.  $ip = $_SERVER["REMOTE_ADDR"]; 
  8.  else if (@getenv("HTTP_X_FORWARDED_FOR")) 
  9.  $ip = getenv("HTTP_X_FORWARDED_FOR"); 
  10.  else if (@getenv("HTTP_CLIENT_IP")) 
  11.  $ip = getenv("HTTP_CLIENT_IP"); 
  12.  else if (@getenv("REMOTE_ADDR")) 
  13.  $ip = getenv("REMOTE_ADDR"); 
  14.  else 
  15.  $ip = "Unknown"
  16.  return $ip

字符串加密(支持中文)

  1. function dencrypt($string$isEncrypt = true, $key = "youdian"
  2.  if (!isset($string{0}) || !isset($key{0})) { 
  3.  return false; 
  4.  } 
  5.    
  6.  $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40); 
  7.  $fixedKey = hash('sha1'$key); 
  8.    
  9.  $dynKeyPart1 = substr($dynKey, 0, 20); 
  10.  $dynKeyPart2 = substr($dynKey, 20); 
  11.  $fixedKeyPart1 = substr($fixedKey, 0, 20); 
  12.  $fixedKeyPart2 = substr($fixedKey, 20); 
  13.  $key = hash('sha1'$dynKeyPart1 . $fixedKeyPart1 . $dynKeyPart2 . $fixedKeyPart2); 
  14.    
  15.  $string = $isEncrypt ? $fixedKeyPart1 . $string . $dynKeyPart2 : (isset($string{339}) ? gzuncompress(base64_decode(substr($string, 40))) : base64_decode(substr($string, 40))); 
  16.    
  17.  $n = 0; 
  18.  $result = ''
  19.  $len = strlen($string); 
  20.    
  21.  for ($n = 0; $n < $len$n++) { 
  22.  $result .= chr(ord($string{$n}) ^ ord($key{$n % 40})); 
  23.  } 
  24.  return $isEncrypt ? $dynKey . str_replace('='''base64_encode($n > 299 ? gzcompress($result) : $result)) : substr($result, 20, -20); 

检查字符串是否包含中文

  1. function CheckChinese($string
  2.  if (preg_match("/[\x7f-\xff]/"$string)) { 
  3.  return true; 
  4.  } else { 
  5.  return false; 
  6.  } 

隐藏文件真实路径

  1. function FileHeaderJump($file
  2.  header('Content-Description: File Transfer'); 
  3.  header('Content-Type: application/octet-stream'); 
  4.  header('Content-Disposition: attachment; filename=' . basename($file)); 
  5.  header('Content-Transfer-Encoding: binary'); 
  6.  header('Expires: 0'); 
  7.  header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
  8.  header('Pragma: public'); 
  9.  header('Content-Length: ' . filesize($file)); 
  10.  ob_clean(); 
  11.  flush(); 
  12.  readfile($file); 
  13.  exit

生成随机字符串,自定义长度

  1. function CreateRandomString($length
  2.  $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  3.  $password = ""
  4.  for ($i = 0; $i < $length$i++) { 
  5.  $password .= $chars[mt_rand(0, strlen($chars) - 1)]; 
  6.  } 
  7.  return $password
  8. }

Tags: PHP功能函数

分享到: