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

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