PHP截取字符串,获取IP,编码转换,获取远程文件内容
2016-03-21 17:14
826 查看
1截取字符串
/** * 截取字符串 * $content 字符串 * $len 截取字数 * $flagstart 标签开始符号 * $flagend 标签结束符号 * $ellp true:带省略号 false:不带 */ public function jj_strcut($content, $len = 20, $flagstart = '[', $flagend = ']', $ellp = false) { $strTmp = ''; // 解析字符串时的指针 $i = 0; $l = 1; // 是否可以中止截字 $flag = true; // 字数是否增加 $ifAddWord = true; while(true) { $wordTmp = substr($content, $i, 1); if($wordTmp === false) { break; } if(($l > $len) && $flag) { if($ellp) { $strTmp .= '...'; } break; } if($wordTmp == $flagstart) { $flag = false; $ifAddWord = false; } if($wordTmp == $flagend) { $flag = true; $ifAddWord = true; } // 如果是双字节,需要取两位;否则取一位就可以 if(ord(substr($content, $i, 1)) > 127) { $strTmp .= substr($content, $i, 2); $i++; } else { $strTmp .= substr($content, $i, 1); } $i++; if($ifAddWord) { $l++; } } return $strTmp; }
2获取ip
/** * @desc 获取 IP * @param * @return string */ static public function getIP(){ $onlineip = ''; 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']; } //对使用了代理的可能取得多个ip进行处理 if(strlen($onlineip) > 15) { $temp = explode(',',$onlineip); $onlineip = trim($temp[count($temp)-1]); } return $onlineip; }
3 编码转换
/** * @description 编码转换 * @param $input 输入需转换内容 * @param $in 输入编码类型 默认 GB2312 * @param $out 输出编码类型 默认 UTF-8 * @param $convert_type 转码方式1=iconv 2=mb_convert_encoding * */ static public function charset_iconv($input,$convert_type=1, $in = 'GB2312', $out = 'UTF-8'){ if(is_array($input)) { foreach ($input as $key => $val){ $input[$key] = self::charset_iconv($val,$convert_type,$in,$out); } } else { if( $convert_type == 1) $input = iconv($in,$out,$input); else $input = mb_convert_encoding($input,$out,$in); } return $input; }
4获取远程文件内容
/** * 获取远程文件内容 * @param $url 文件http地址 */ public function fopen_url($url) { if(function_exists('file_get_contents')) { $file_content = @file_get_contents($url); } elseif(ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))) { $i = 0; while(!feof($file) && $i++ < 1000) { $file_content .= strtolower(fread($file, 4096)); } fclose($file); } elseif(function_exists('curl_init')) { $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_FAILONERROR, 1); curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查 $file_content = curl_exec($curl_handle); curl_close($curl_handle); } else { $file_content = ''; } return $file_content; }
5 ip转整型
/** * @description ip转整型, ip2long在不同系统下会出现返回值不一样现象 * @param $ip */ static function ip2int($ip){ if (!$r = ip2long($ip)) return 0; if ($r <0){ $r = sprintf("%u",$r); } return $r; }
相关文章推荐
- 公司某个很奇怪的要求,TP框架
- php_ReflectionClass_反射
- PHP中substr截取中文乱码解决方案
- PHP高效率写法(详解原因)
- php面向对象
- PHP四舍五入 保留几位小数 格式化数字
- 自己的php学习笔记(部分)
- PHPUnit 测试 thinkphp
- ThinkPHP 自动验证
- php图表fusioncharts使用实例
- PHP之session
- PHP的array_merge、array_diff与null
- PHP针对二维数组无限遍历变形研究
- php中遍历二维数组并以表格的形式输出
- yii 学习笔记值 如何批量像数据库插入数据
- phpcms推荐位的自定义字段的调用
- 烂泥:Server-U FTP与AD完美集成方案详解
- PHP设计模式 迭代器模式
- 使用 php isset 遇到的问题
- ftp文件服务器的安装和配置