olga 发表于 2017-4-6 11:56:56

php 几个比较实用的函数

最近在看代码,发现以下是几个比较实用的函数。
1,取客户端IP
查看复制打印?


[*]functiongetOnlineIp(){
[*]$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?$onlineipmatches:'unknown';
[*]return$strOnlineIp;
[*]}

这里,如果使用多级代理的用户,真实IP是取不到的。
2,字符串截取,支持中文
查看复制打印?


[*]functiongetStrTruncate($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;
[*]}
[*]}
[*]
[*]echogetStrTruncate("海底苍鹰博客",7);//结果是海底苍,utf8一个汉字对应二个字符

3,多长时间前的时间函数,论坛,博客常用
查看复制打印?


[*]functiontimeFromNow($dateline){
[*]if(emptyempty($dateline))returnfalse;
[*]$seconds=time()-$dateline;
[*]if($seconds<60){
[*]return"1分钟前";
[*]}elseif($seconds<3600){
[*]returnfloor($seconds/60)."分钟前";
[*]}elseif($seconds<24*3600){
[*]returnfloor($seconds/3600)."小时前";
[*]}elseif($seconds<48*3600){
[*]returndate("昨天H:i",$dateline)."";
[*]}else{
[*]returndate('Y-m-d',$dateline);
[*]}
[*]}
[*]
[*]echotimeFromNow(strtotime("2012-07-0714:15:13"));//昨天14:15
[*]echotimeFromNow(strtotime("2012-07-0814:15:13"));//1小前

4,过滤部分标签
查看复制打印?


[*]functiondelTags($str)
[*]{
[*]$farr=array(
[*]"/<(\/?)(script|i?frame|style|html|body|title|link|meta|form|input|embed|object|textarea|\?|\%)([^>]*?)>/isU",
[*]"/(<[^>]*)on+\s*=([^>]*>)/isU"
[*]);
[*]$tarr=array(
[*]"",
[*]""
[*]);
[*]$str=preg_replace($farr,$tarr,$str);
[*]return$str;
[*]}
[*]
[*]$str="<ahref='#'>asdfasdfsd</a>====<script>alert(1111)</script>";
[*]echodelTags($str);//结果:<ahref='#'>asdfasdfsd</a>====alert(1111)
[*]echostrip_tags($str);//结果:sdfasdfsd====alert(1111)

如果要过滤所有标签strip_tags就够用了。
页: [1]
查看完整版本: php 几个比较实用的函数