本文实例总结了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程序设计有所帮助。