A5下载文章资讯

分类分类

PHP几个实用自定义函数小结

2016-01-26 14:09作者:fang

本文实例总结了PHP几个实用自定义函数。分享给大家供大家参考,具体如下:

最近在看代码,发现以下是几个比较实用的函数。

1、取客户端IP

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、字符串截取,支持中文

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、多长时间前的时间函数,论坛,博客常用

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、过滤部分标签

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程序设计有所帮助。

展开全部

相关

说两句网友评论
    我要跟贴
    取消