PHP截取字符串,获取IP,编码转换,获取远程文件内容

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;
	}




你可能感兴趣的:(php)