本文实例总结了PHP几个实用自定义函数。分享给大家供大家参考,具体如下:
最近在看代码,发现以下是几个比较实用的函数。
1、取客户端IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function getOnlineIp() {
$strOnlineIp = "" ;
if ( getenv ( 'HTTP_CLIENT_IP' ) && strcasecmp ( getenv ( 'HTTP_CLIENT_IP' ), 'unknown' )) {
$onlineip = getenv ( 'HTTP_CLIENT_IP' );
} elseif ( getenv ( 'HTTP_X_FORWARDED_FOR' ) && strcasecmp ( getenv ( 'HTTP_X_FORWARDED_FOR' ), 'unknown' )) {
$onlineip = getenv ( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv ( 'REMOTE_ADDR' ) && strcasecmp ( getenv ( 'REMOTE_ADDR' ), 'unknown' )) {
$onlineip = getenv ( 'REMOTE_ADDR' );
} elseif (isset( $_SERVER [ 'REMOTE_ADDR' ]) && $_SERVER [ 'REMOTE_ADDR' ] && strcasecmp ( $_SERVER [ 'REMOTE_ADDR' ], 'unknown' )) {
$onlineip = $_SERVER [ 'REMOTE_ADDR' ];
}
preg_match( "/[\d\.]{7,15}/" , $onlineip , $onlineipmatches );
$strOnlineIp = $onlineipmatches [0] ? $onlineipmatches [0] : 'unknown' ;
return $strOnlineIp ;
}
|
这里,如果使用多级代理的用户,真实IP是取不到的。
2、字符串截取,支持中文
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function getStrTruncate( $string , $length = 80, $etc = '' ){
if ( $length == 0) return '' ;
mb_internal_encoding( "UTF-8" );
$string = str_replace ( "\n" , "" , $string );
$strlen = mb_strwidth( $string );
if ( $strlen > $length ) {
$etclen = mb_strwidth( $etc );
$length = $length - $etclen ;
$str = '' ; $n = 0;
for ( $i =0; $i < $length ; $i ++) {
$c = mb_substr( $string , $i , 1);
$n += mb_strwidth( $c );
if ( $n > $length ) { break ; }
$str .= $c ;
}
return $str . $etc ;
} else {
return $string ;
}
}
echo getStrTruncate( "海底苍鹰博客" ,7); //结果是海底苍,utf8一个汉字对应二个字符
|
3、多长时间前的时间函数,论坛,博客常用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function timeFromNow( $dateline ) {
if (emptyempty( $dateline )) return false;
$seconds = time() - $dateline ;
if ( $seconds < 60){
return "1分钟前" ;
} elseif ( $seconds < 3600){
return floor ( $seconds /60). "分钟前" ;
} elseif ( $seconds < 24*3600){
return floor ( $seconds /3600). "小时前" ;
} elseif ( $seconds < 48*3600){
return date ( "昨天 H:i" , $dateline ). "" ;
} else {
return date ( 'Y-m-d' , $dateline );
}
}
echo timeFromNow( strtotime ( "2012-07-07 14:15:13" )); //昨天 14:15
echo timeFromNow( strtotime ( "2012-07-08 14:15:13" )); //1小前
|
4、过滤部分标签
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function delTags( $str )
{
$farr = array (
"/<(\/?)(script|i?frame|style|html|body|title|link|meta|form|input|embed|object|textarea|\?|\%)([^>]*?)>/isU" ,
"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU"
);
$tarr = array (
"" ,
""
);
$str = preg_replace( $farr , $tarr , $str );
return $str ;
}
$str = "<a href='#'>asdfasdfsd</a>====<script>alert(1111)</script>" ;
echo delTags( $str ); //结果:<a href='#'>asdfasdfsd</a>====alert(1111)
echo strip_tags ( $str ); //结果:sdfasdfsd====alert(1111)
|
如果要过滤所有标签strip_tags就够用了。
希望本文所述对大家PHP程序设计有所帮助。