1.getcwd
若成功,则返回当前工作目录,否则返回 false。如:echo getcwd; 结果输出:C:\testweb\main
2.chdir() 函数改变当前的目录。
如:echo getcwd; result: /home/php
chdir('ceshi');//类似linux命令cd 如:cd ceshi
echo getcwd; result:/home/php/ceshi
3 以下是PHP在不同版本,不同服务器上的兼容处理 /* 在部分IIS上会没有REQUEST_URI变量 */
$query_string = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : $_SERVER['QUERY_STRING'];
if (! isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = PHP_SELF . '?' . $query_string;
} else {
if (strpos($_SERVER['REQUEST_URI'], '?') === false && $query_string) {
$_SERVER['REQUEST_URI'] .= '?' . $query_string;
}
}
4./* 数据过滤 */
if (! get_magic_quotes_gpc()) {
$_GET = addslashes_deep($_GET);
$_POST = addslashes_deep($_POST);
$_COOKIE = addslashes_deep($_COOKIE);
}
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“ ”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误.
在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime。当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
如果get_magic_quotes_gpc是off的,那么就用addslashes 对变量中的特殊字符进行转义
echo addslashes('Shanghai is the "biggest" city in China.'); result:Shanghai is the \"biggest\" city in China.
/**
* 递归方式的对变量中的特殊字符进行转义
* @access public
* @param mix $value
*
* @return mix
*/
function addslashes_deep($value)
{
if (empty($value)) {
return $value;
} else {
return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
}
}
/**
* 将对象成员变量或者数组的特殊字符进行转义
* @access public
* @param mix $obj
* 对象或者数组
* @return mix 对象或者数组
*/
function addslashes_deep_obj($obj)
{
if (is_object($obj) == true) {
foreach ($obj as $key => $val) {
if (($val) == true) {
$obj->$key = addslashes_deep_obj($val);
} else {
$obj->$key = addslashes_deep($val);
}
}
} else {
$obj = addslashes_deep($obj);
}
return $obj;
}
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
提示:该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。
如:echo stripslashes("Who\'s jams?"); result:Who's jams?
/**
* 递归方式的对变量中的特殊字符去除转义
*
* @access public
* @param mix $value
*
* @return mix
*/
function stripslashes_deep($value)
{
if (empty($value)) {
return $value;
} else {
return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
}
}
这里讲解下array_map的用法
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
<?php
function myfunction($v)
{
return($v*$v);//每个值都乘以本身
}
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));//将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组:
?>
result:Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
5./*标准错误输出到Apache Log*/
function set_standard_log ($msg='') {
if(is_array($msg)) $msg = var_export($msg,TRUE);
error_log('PHP LOG INFO ->'.$msg );
}
6.compact /*创建一个包含变量名和它们的值的数组*/
<?php
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result);
?>
result: Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )
7.basename 函数返回路径中的文件名部分
<?php
$path = "/myitem/home.php";
echo basename($path);//显示带有文件扩展名的文件名
// result:home.php
echo basename($path,".php");//显示不带有文件扩展名的文件名
//result: home
?>
result:
8.is_file 函数检查指定的文件名是否是正常的文件,如果文件存在且为正常的文件,则返回 true。
<?php
$file = "ceshi.txt";
if(is_file($file)){
echo ("yes");
}else{
echo ("no");
}
?>
9.array_walk 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
<?php
function mywalk($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"mywalk");
?>
result:
The key a has the value red
The key b has the value green
The key c has the value blue
10.parse_url 本函数将 URL 字符串予以解析,并将结果返回数组中
<?php
$arr = parse_url('http://www.baidu.com/1/2/ceshi/ceshi.php');
echo '<pre>';print_r($arr);die();
?>
result:
Array
(
[scheme] => http
[host] => www.baidu.com
[path] => /1/2/ceshi/ceshi.php
)
11.trigger_error 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。
<?php
$a=5;
if ($a>2){
trigger_error("A custom error has been triggered");
}
?>
12./* 获得当前的域名 @return string */
function get_domain()
{
/* 协议 */
$protocol = (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
/* 域名或IP地址 */
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
} elseif (isset($_SERVER['HTTP_HOST'])) {
$host = $_SERVER['HTTP_HOST'];
} else {
/* 端口 */
if (isset($_SERVER['SERVER_PORT'])) {
$port = ':' . $_SERVER['SERVER_PORT'];
if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol)) {
$port = '';
}
} else {
$port = '';
}
if (isset($_SERVER['SERVER_NAME'])) {
$host = $_SERVER['SERVER_NAME'] . $port;
} elseif (isset($_SERVER['SERVER_ADDR'])) {
$host = $_SERVER['SERVER_ADDR'] . $port;
}
}
return $protocol . $host;
}
13./*获得网站的URL地址 get_domain方法在12点已经封装 htmlentities() 函数把字符转换为 HTML 实体。*/
function site_url()
{
define('PHP_SELF', htmlentities(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']));
return get_domain() . substr(PHP_SELF, 0, strrpos(PHP_SELF, '/'));
}
14.
/**
* 截取UTF-8编码下字符串的函数
*
* @param string $str
* 被截取的字符串
* @param int $length
* 截取的长度
* @param bool $append
* 是否附加省略号
*
* @return string
*/
function sub_str($string, $length = 0, $append = true)
{
if (strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(
'&',
'"',
'<',
'>'
), array(
'&',
'"',
'<',
'>'
), $string);
$strcut = '';
if (strtolower(CHARSET) == 'utf-8') {
$n = $tn = $noc = 0;
while ($n < strlen($string)) {
$t = ord($string[$n]);
if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1;
$n ++;
$noc ++;
} elseif (194 <= $t && $t <= 223) {
$tn = 2;
$n += 2;
$noc += 2;
} elseif (224 <= $t && $t < 239) {
$tn = 3;
$n += 3;
$noc += 2;
} elseif (240 <= $t && $t <= 247) {
$tn = 4;
$n += 4;
$noc += 2;
} elseif (248 <= $t && $t <= 251) {
$tn = 5;
$n += 5;
$noc += 2;
} elseif ($t == 252 || $t == 253) {
$tn = 6;
$n += 6;
$noc += 2;
} else {
$n ++;
}
if ($noc >= $length) {
break;
}
}
if ($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for ($i = 0; $i < $length; $i ++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++ $i] : $string[$i];
}
}
$strcut = str_replace(array(
'&',
'"',
'<',
'>'
), array(
'&',
'"',
'<',
'>'
), $strcut);
if ($append && $string != $strcut) {
$strcut .= '...';
}
return $strcut;
}
15 获得用户的真实IP地址
function real_ip()
{
static $realip = NULL;
if ($realip !== NULL) {
return $realip;
}
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($arr as $ip) {
$ip = trim($ip);
if ($ip != 'unknown') {
$realip = $ip;
break;
}
}
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
if (isset($_SERVER['REMOTE_ADDR'])) {
$realip = $_SERVER['REMOTE_ADDR'];
} else {
$realip = '0.0.0.0';
}
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('HTTP_CLIENT_IP')) {
$realip = getenv('HTTP_CLIENT_IP');
} else {
$realip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = ! empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}
16
/**
* 验证输入的邮件地址是否合法
*
* @param string $email
* 需要验证的邮件地址
*
* @return bool
*/
function is_email($user_email)
{
$chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,5}\$/i";
if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) {
if (preg_match($chars, $user_email)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
17
/**
* 检查是否为一个合法的时间格式
*
* @param string $time
* @return void
*/
function is_time($time)
{
$pattern = '/[\d]{4}-[\d]{1,2}-[\d]{1,2}\s[\d]{1,2}:[\d]{1,2}:[\d]{1,2}/';
return preg_match($pattern, $time);
}
18
/**
* 获得服务器上的 GD 版本
*
* @return int 可能的值为0,1,2
*/
function gd_version()
{
static $version = -1;
if ($version >= 0)
{
return $version;
}
if (!extension_loaded('gd'))
{
$version = 0;
}
else
{
// 尝试使用gd_info函数
if (PHP_VERSION >= '4.3')
{
if (function_exists('gd_info'))
{
$ver_info = gd_info();
preg_match('/\d/', $ver_info['GD Version'], $match);
$version = $match[0];
}
else
{
if (function_exists('imagecreatetruecolor'))
{
$version = 2;
}
elseif (function_exists('imagecreate'))
{
$version = 1;
}
}
}
else
{
if (preg_match('/phpinfo/', ini_get('disable_functions')))
{
/* 如果phpinfo被禁用,无法确定gd版本 */
$version = 1;
}
else
{
// 使用phpinfo函数
ob_start();
phpinfo(8);
$info = ob_get_contents();
ob_end_clean();
$info = stristr($info, 'gd version');
preg_match('/\d/', $info, $match);
$version = $match[0];
}
}
}
return $version;
}
19
/**
* 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符
*
* @access public
* @param string $str
* 待转换字串
*
* @return string $str 处理后字串
*/
function make_semiangle($str)
{
$arr = array(
'0' => '0',
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5',
'6' => '6',
'7' => '7',
'8' => '8',
'9' => '9',
'A' => 'A',
'B' => 'B',
'C' => 'C',
'D' => 'D',
'E' => 'E',
'F' => 'F',
'G' => 'G',
'H' => 'H',
'I' => 'I',
'J' => 'J',
'K' => 'K',
'L' => 'L',
'M' => 'M',
'N' => 'N',
'O' => 'O',
'P' => 'P',
'Q' => 'Q',
'R' => 'R',
'S' => 'S',
'T' => 'T',
'U' => 'U',
'V' => 'V',
'W' => 'W',
'X' => 'X',
'Y' => 'Y',
'Z' => 'Z',
'a' => 'a',
'b' => 'b',
'c' => 'c',
'd' => 'd',
'e' => 'e',
'f' => 'f',
'g' => 'g',
'h' => 'h',
'i' => 'i',
'j' => 'j',
'k' => 'k',
'l' => 'l',
'm' => 'm',
'n' => 'n',
'o' => 'o',
'p' => 'p',
'q' => 'q',
'r' => 'r',
's' => 's',
't' => 't',
'u' => 'u',
'v' => 'v',
'w' => 'w',
'x' => 'x',
'y' => 'y',
'z' => 'z',
'(' => '(',
')' => ')',
'[' => '[',
']' => ']',
'【' => '[',
'】' => ']',
'〖' => '[',
'〗' => ']',
'「' => '[',
'」' => ']',
'『' => '[',
'』' => ']',
'{' => '{',
'}' => '}',
'《' => '<',
'》' => '>',
'%' => '%',
'+' => '+',
'—' => '-',
'-' => '-',
'~' => '-',
':' => ':',
'。' => '.',
'、' => ',',
',' => '.',
'、' => '.',
';' => ',',
'?' => '?',
'!' => '!',
'…' => '-',
'‖' => '|',
'"' => '"',
''' => '`',
'`' => '`',
'|' => '|',
'〃' => '"',
' ' => ' '
);
return strtr($str, $arr);
}
20. array_unique 移除数组中重复的值
$arr = array(1,2,1,3);
$arr = array_unique($arr);
echo '<pre>';print_r($arr);die();
result:Array
(
[0] => 1
[1] => 2
[3] => 3
)
若成功,则返回当前工作目录,否则返回 false。如:echo getcwd; 结果输出:C:\testweb\main
2.chdir() 函数改变当前的目录。
如:echo getcwd; result: /home/php
chdir('ceshi');//类似linux命令cd 如:cd ceshi
echo getcwd; result:/home/php/ceshi
3 以下是PHP在不同版本,不同服务器上的兼容处理 /* 在部分IIS上会没有REQUEST_URI变量 */
$query_string = isset($_SERVER['argv'][0]) ? $_SERVER['argv'][0] : $_SERVER['QUERY_STRING'];
if (! isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = PHP_SELF . '?' . $query_string;
} else {
if (strpos($_SERVER['REQUEST_URI'], '?') === false && $query_string) {
$_SERVER['REQUEST_URI'] .= '?' . $query_string;
}
}
4./* 数据过滤 */
if (! get_magic_quotes_gpc()) {
$_GET = addslashes_deep($_GET);
$_POST = addslashes_deep($_POST);
$_COOKIE = addslashes_deep($_COOKIE);
}
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“ ”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误.
在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime。当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。
当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1
当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0
如果get_magic_quotes_gpc是off的,那么就用addslashes 对变量中的特殊字符进行转义
echo addslashes('Shanghai is the "biggest" city in China.'); result:Shanghai is the \"biggest\" city in China.
/**
* 递归方式的对变量中的特殊字符进行转义
* @access public
* @param mix $value
*
* @return mix
*/
function addslashes_deep($value)
{
if (empty($value)) {
return $value;
} else {
return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
}
}
/**
* 将对象成员变量或者数组的特殊字符进行转义
* @access public
* @param mix $obj
* 对象或者数组
* @return mix 对象或者数组
*/
function addslashes_deep_obj($obj)
{
if (is_object($obj) == true) {
foreach ($obj as $key => $val) {
if (($val) == true) {
$obj->$key = addslashes_deep_obj($val);
} else {
$obj->$key = addslashes_deep($val);
}
}
} else {
$obj = addslashes_deep($obj);
}
return $obj;
}
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
提示:该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。
如:echo stripslashes("Who\'s jams?"); result:Who's jams?
/**
* 递归方式的对变量中的特殊字符去除转义
*
* @access public
* @param mix $value
*
* @return mix
*/
function stripslashes_deep($value)
{
if (empty($value)) {
return $value;
} else {
return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
}
}
这里讲解下array_map的用法
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
<?php
function myfunction($v)
{
return($v*$v);//每个值都乘以本身
}
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));//将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组:
?>
result:Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
5./*标准错误输出到Apache Log*/
function set_standard_log ($msg='') {
if(is_array($msg)) $msg = var_export($msg,TRUE);
error_log('PHP LOG INFO ->'.$msg );
}
6.compact /*创建一个包含变量名和它们的值的数组*/
<?php
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result);
?>
result: Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )
7.basename 函数返回路径中的文件名部分
<?php
$path = "/myitem/home.php";
echo basename($path);//显示带有文件扩展名的文件名
// result:home.php
echo basename($path,".php");//显示不带有文件扩展名的文件名
//result: home
?>
result:
8.is_file 函数检查指定的文件名是否是正常的文件,如果文件存在且为正常的文件,则返回 true。
<?php
$file = "ceshi.txt";
if(is_file($file)){
echo ("yes");
}else{
echo ("no");
}
?>
9.array_walk 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数
<?php
function mywalk($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"mywalk");
?>
result:
The key a has the value red
The key b has the value green
The key c has the value blue
10.parse_url 本函数将 URL 字符串予以解析,并将结果返回数组中
<?php
$arr = parse_url('http://www.baidu.com/1/2/ceshi/ceshi.php');
echo '<pre>';print_r($arr);die();
?>
result:
Array
(
[scheme] => http
[host] => www.baidu.com
[path] => /1/2/ceshi/ceshi.php
)
11.trigger_error 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。
<?php
$a=5;
if ($a>2){
trigger_error("A custom error has been triggered");
}
?>
12./* 获得当前的域名 @return string */
function get_domain()
{
/* 协议 */
$protocol = (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
/* 域名或IP地址 */
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
} elseif (isset($_SERVER['HTTP_HOST'])) {
$host = $_SERVER['HTTP_HOST'];
} else {
/* 端口 */
if (isset($_SERVER['SERVER_PORT'])) {
$port = ':' . $_SERVER['SERVER_PORT'];
if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol)) {
$port = '';
}
} else {
$port = '';
}
if (isset($_SERVER['SERVER_NAME'])) {
$host = $_SERVER['SERVER_NAME'] . $port;
} elseif (isset($_SERVER['SERVER_ADDR'])) {
$host = $_SERVER['SERVER_ADDR'] . $port;
}
}
return $protocol . $host;
}
13./*获得网站的URL地址 get_domain方法在12点已经封装 htmlentities() 函数把字符转换为 HTML 实体。*/
function site_url()
{
define('PHP_SELF', htmlentities(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']));
return get_domain() . substr(PHP_SELF, 0, strrpos(PHP_SELF, '/'));
}
14.
/**
* 截取UTF-8编码下字符串的函数
*
* @param string $str
* 被截取的字符串
* @param int $length
* 截取的长度
* @param bool $append
* 是否附加省略号
*
* @return string
*/
function sub_str($string, $length = 0, $append = true)
{
if (strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(
'&',
'"',
'<',
'>'
), array(
'&',
'"',
'<',
'>'
), $string);
$strcut = '';
if (strtolower(CHARSET) == 'utf-8') {
$n = $tn = $noc = 0;
while ($n < strlen($string)) {
$t = ord($string[$n]);
if ($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1;
$n ++;
$noc ++;
} elseif (194 <= $t && $t <= 223) {
$tn = 2;
$n += 2;
$noc += 2;
} elseif (224 <= $t && $t < 239) {
$tn = 3;
$n += 3;
$noc += 2;
} elseif (240 <= $t && $t <= 247) {
$tn = 4;
$n += 4;
$noc += 2;
} elseif (248 <= $t && $t <= 251) {
$tn = 5;
$n += 5;
$noc += 2;
} elseif ($t == 252 || $t == 253) {
$tn = 6;
$n += 6;
$noc += 2;
} else {
$n ++;
}
if ($noc >= $length) {
break;
}
}
if ($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for ($i = 0; $i < $length; $i ++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++ $i] : $string[$i];
}
}
$strcut = str_replace(array(
'&',
'"',
'<',
'>'
), array(
'&',
'"',
'<',
'>'
), $strcut);
if ($append && $string != $strcut) {
$strcut .= '...';
}
return $strcut;
}
15 获得用户的真实IP地址
function real_ip()
{
static $realip = NULL;
if ($realip !== NULL) {
return $realip;
}
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($arr as $ip) {
$ip = trim($ip);
if ($ip != 'unknown') {
$realip = $ip;
break;
}
}
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
if (isset($_SERVER['REMOTE_ADDR'])) {
$realip = $_SERVER['REMOTE_ADDR'];
} else {
$realip = '0.0.0.0';
}
}
} else {
if (getenv('HTTP_X_FORWARDED_FOR')) {
$realip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('HTTP_CLIENT_IP')) {
$realip = getenv('HTTP_CLIENT_IP');
} else {
$realip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = ! empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}
16
/**
* 验证输入的邮件地址是否合法
*
* @param string $email
* 需要验证的邮件地址
*
* @return bool
*/
function is_email($user_email)
{
$chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,5}\$/i";
if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) {
if (preg_match($chars, $user_email)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
17
/**
* 检查是否为一个合法的时间格式
*
* @param string $time
* @return void
*/
function is_time($time)
{
$pattern = '/[\d]{4}-[\d]{1,2}-[\d]{1,2}\s[\d]{1,2}:[\d]{1,2}:[\d]{1,2}/';
return preg_match($pattern, $time);
}
18
/**
* 获得服务器上的 GD 版本
*
* @return int 可能的值为0,1,2
*/
function gd_version()
{
static $version = -1;
if ($version >= 0)
{
return $version;
}
if (!extension_loaded('gd'))
{
$version = 0;
}
else
{
// 尝试使用gd_info函数
if (PHP_VERSION >= '4.3')
{
if (function_exists('gd_info'))
{
$ver_info = gd_info();
preg_match('/\d/', $ver_info['GD Version'], $match);
$version = $match[0];
}
else
{
if (function_exists('imagecreatetruecolor'))
{
$version = 2;
}
elseif (function_exists('imagecreate'))
{
$version = 1;
}
}
}
else
{
if (preg_match('/phpinfo/', ini_get('disable_functions')))
{
/* 如果phpinfo被禁用,无法确定gd版本 */
$version = 1;
}
else
{
// 使用phpinfo函数
ob_start();
phpinfo(8);
$info = ob_get_contents();
ob_end_clean();
$info = stristr($info, 'gd version');
preg_match('/\d/', $info, $match);
$version = $match[0];
}
}
}
return $version;
}
19
/**
* 将一个字串中含有全角的数字字符、字母、空格或'%+-()'字符转换为相应半角字符
*
* @access public
* @param string $str
* 待转换字串
*
* @return string $str 处理后字串
*/
function make_semiangle($str)
{
$arr = array(
'0' => '0',
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5',
'6' => '6',
'7' => '7',
'8' => '8',
'9' => '9',
'A' => 'A',
'B' => 'B',
'C' => 'C',
'D' => 'D',
'E' => 'E',
'F' => 'F',
'G' => 'G',
'H' => 'H',
'I' => 'I',
'J' => 'J',
'K' => 'K',
'L' => 'L',
'M' => 'M',
'N' => 'N',
'O' => 'O',
'P' => 'P',
'Q' => 'Q',
'R' => 'R',
'S' => 'S',
'T' => 'T',
'U' => 'U',
'V' => 'V',
'W' => 'W',
'X' => 'X',
'Y' => 'Y',
'Z' => 'Z',
'a' => 'a',
'b' => 'b',
'c' => 'c',
'd' => 'd',
'e' => 'e',
'f' => 'f',
'g' => 'g',
'h' => 'h',
'i' => 'i',
'j' => 'j',
'k' => 'k',
'l' => 'l',
'm' => 'm',
'n' => 'n',
'o' => 'o',
'p' => 'p',
'q' => 'q',
'r' => 'r',
's' => 's',
't' => 't',
'u' => 'u',
'v' => 'v',
'w' => 'w',
'x' => 'x',
'y' => 'y',
'z' => 'z',
'(' => '(',
')' => ')',
'[' => '[',
']' => ']',
'【' => '[',
'】' => ']',
'〖' => '[',
'〗' => ']',
'「' => '[',
'」' => ']',
'『' => '[',
'』' => ']',
'{' => '{',
'}' => '}',
'《' => '<',
'》' => '>',
'%' => '%',
'+' => '+',
'—' => '-',
'-' => '-',
'~' => '-',
':' => ':',
'。' => '.',
'、' => ',',
',' => '.',
'、' => '.',
';' => ',',
'?' => '?',
'!' => '!',
'…' => '-',
'‖' => '|',
'"' => '"',
''' => '`',
'`' => '`',
'|' => '|',
'〃' => '"',
' ' => ' '
);
return strtr($str, $arr);
}
20. array_unique 移除数组中重复的值
$arr = array(1,2,1,3);
$arr = array_unique($arr);
echo '<pre>';print_r($arr);die();
result:Array
(
[0] => 1
[1] => 2
[3] => 3
)