您的位置:首页 > 编程语言 > PHP开发

php 几个比较实用的函数

2014-03-19 20:53 656 查看
最近在看代码,发现以下是几个比较实用的函数。

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就够用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: