PHP小函数集-篇一
一、 验证
/**
* 判断用户名是否规范
*/
function is_username($username)
{
if (preg_match("/^[a-zA-Z]{1}([0-9a-zA-Z]|[._]){3,19}$/",$username))
{
return true;
}
}
/**
* 判断密码是否规范
*/
function is_password($password)
{
if (preg_match("/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/",$password))
{
return true;
}
}
/**
* 判断是否为数字
*/
function is_number($number)
{
if (preg_match("/^[0-9]*[1-9][0-9]*$/", $number))
{
return true;
}
}
/**
* 判断是否为邮件地址
*/
function is_email($email)
{
if (preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/", $email))
{
return true;
}
}
/**
* 判断是否为字母
*/
function is_letter($letter)
{
if (preg_match("/^[a-z]+$/", $letter))
{
return true;
}
}
/**
* 验证文本域输入的内容
*/
function is_text($text)
{
if (preg_match("/^[\x{4e00}-\x{9fa5}a-zA-Z0-9,,。.??!!*-_\s]+$/u", $text))
{
return true;
}
}
/**
* 验证文本框输入的内容
*/
function is_textarea($textarea)
{
if (preg_match("/^[\x{4e00}-\x{9fa5}a-zA-Z0-9,,。.??!!*-_@=#\s\n\r]+$/u", $textarea))
{
return true;
}
}
/**
* 判断 文件/目录 是否可写
*/
function check_writeable($file)
{
if (file_exists($file))
{
if (is_dir($file))
{
$dir = $file;
if ($fp = @fopen("$dir/test.txt", 'w'))
{
@fclose($fp);
@unlink("$dir/test.txt");
$writeable = 1;
}
else
{
$writeable = 0;
}
}
else
{
if ($fp = @fopen($file, 'a+'))
{
@fclose($fp);
$writeable = 1;
}
else
{
$writeable = 0;
}
}
}
else
{
$writeable = 2;
} return $writeable;
}
/**
+----------------------------------------------------------
* 递归方式的对变量中的特殊字符进行转义
+----------------------------------------------------------
*/
function addslashes_deep($value)
{
if (empty ($value))
{
return $value;
} if (is_array($value))
{
foreach ((array) $value as $k => $v)
{
unset ($value[$k]);
$k = addslashes($k);
if (is_array($v))
$value[$k] = addslashes_deep($v);
else
$value[$k] = addslashes($v);
}
}
else
{
$value = addslashes($value);
}
return $value;
} /**
+----------------------------------------------------------
* 递归方式的对变量中的特殊字符去除转义
+----------------------------------------------------------
*/
function stripslashes_deep($value)
{
if (empty ($value))
{
return $value;
} if (is_array($value))
{
foreach ((array) $value as $k => $v)
{
unset ($value[$k]);
$k = stripslashes($k);
if (is_array($v))
{
$value[$k] = stripslashes_deep($v);
}
else
{
$value[$k] = stripslashes($v);
}
}
}
else
{
$value = stripslashes($value);
}
return $value;
} /**
+----------------------------------------------------------
* 交互数据转义操作
+----------------------------------------------------------
*/
function dou_magic_quotes()
{
if (!@ get_magic_quotes_gpc())
{
if (!empty ($_GET))
$_GET = addslashes_deep($_GET);
if (!empty ($_POST))
$_POST = addslashes_deep($_POST);
$_COOKIE = addslashes_deep($_COOKIE);
$_REQUEST = addslashes_deep($_REQUEST);
}
}
/**
+----------------------------------------------------------
* 获取真实IP地址
+----------------------------------------------------------
*/
function get_ip()
{
$ip = false;
if (!empty ($_SERVER["HTTP_CLIENT_IP"]))
{
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty ($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip)
{
array_unshift($ips, $ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++)
{
if (!preg_match("/^(10|172\.16|192\.168)\./", $ips[$i]))
{
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
PHP小函数集-篇一的更多相关文章
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews
Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...
- C#常用函数--通用篇
C#常用函数→通用篇转载地址→http://www.cnblogs.com/superfang/archive/2008/07/02/1233706.html以前我都是"原文地址" ...
- php常用Stream函数集介绍
php常用Stream函数集介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-24 本篇文章是对php中的常用Stream函数集进行了详细的分析介绍,需要的朋友参考下 ...
- perl5 附录一 函数集(未定稿)
附录一 函数集(未定稿) by flamephoenix 一.进程处理函数 1.进程启动函数 2.进程终止函数 3.进程控制函数 4.其它控制函数二.数学函数三.字符串处理函数四.标量转换函数 ...
- 微信小程序入门篇
微信小程序入门篇: 准备工作 IDE搭建 就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程 图片发自简书App 知识准备 JavaScrip还是要看看的,推荐教 ...
- 使用getopt_long来解析参数的小函数模板
getopt_long原型 #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct o ...
- 几个非常有用的js小函数
function $(v){ if(typeof v==="function"){ window.onload=v; }else if(typeof v==="strin ...
- JS_ECMA基本语法中的几种封装的小函数-2
大家好!今天继续给大家写一下ECMA中的剩下的小函数以及实用的实例: 首先先给大家说一下字符串.数组.数学方法以及json的一点小知识点: 字符串方法: str.length str.charAt(i ...
- JS_ECMA基本语法中的几种封装的小函数-1
今天给大家介绍js ECMA中几个封装的小函数以及一些常用的函数小案例: 1,找重复的函数 <script> //在数组里面找重复: function findInArr(n,arr){ ...
随机推荐
- hdu 4539
#include<stdio.h> #include<string.h> ]; int s]; int main() { int i,j,n,m; int ch; while( ...
- Session保存用户名到Session域对象中
Session保存用户名 1.构造登录界面 用户名: 密 码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html> < ...
- [Baltic2007]序列问题Sequence
Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1002 Solved: 535[Submit][Status][Discuss] Descriptio ...
- Codeforces936B. Sleepy Game
还好这场没打 MD什么破题 n<=100000,m<=200000的图问从s点出发能否走奇数条边到一个没有出度的点. 直观的想法:做一个bfs,$f(i,0/1)$表示从$s$出发到$i$ ...
- CF830B:Cards Sorting
对叠放着的n张牌,第i张牌写有数字Ai,进行操作:将牌堆顶的牌取出,若是当前牌堆最小值就扔掉,否则放到牌堆底,求牌堆空时操作次数. 怎么看怎么像约瑟夫..不过约瑟夫DP我不太熟,于是就yy了一下 “当 ...
- 指针与数组的对比(——选自:C++内存管理技术内幕)
数组: 数组要么是在静态存储区上创建(如全局数组),要么是在栈上创建的.数组名代表着 段连续的内存,其地址和容量在生命周期内是不会改变的,而只能改变其数组内容. 指针: 指针是一种指针类型的变量,变量 ...
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法. 简单示例: 主文件:Main.fla, Main.as 被调用的文件:called.swf, Cal ...
- FatMouse's Speed--hdu1160(dp+输出路径)
Problem Description FatMouse believes that the fatter a mouse is, the faster it runs. To disprove th ...
- OO第三单元总结——JML
目录 写在前面 JML理论基础 JML工具链 JMLUnitNG的使用 架构设计 Bug分析 心得体会 写在前面 OO的第三单元学习结束了,本单元我们学习了如何使用JML语言来对我们的程序进行规格化设 ...
- Null value was assigned to a property of primitive type setter of原因及解决
出现Null value was assigned to a property of primitive type setter of错误是由于类型不匹配,将字段的属性由hibernate的int类型 ...