用于utf8编码的字符串截取的函数:utf8_substr,有需要的朋友可以看看。
<?php
/*
* 用于utf8编码的字符串截取
*/
function utf8_substr($str,$position,$length){
$start_position = strlen($str);
$start_byte = 0;
$end_position = strlen($str);
$count = 0;
for($i = 0; $i < strlen($str); $i++){
if($count >= $position && $start_position > $i){
$start_position = $i;
$start_byte = $count;
}
if(($count-$start_byte)>=$length) {
$end_position = $i;
break;
}
$value = ord($str[$i]);
if($value > 127){
$count++;
if($value >= 192 && $value <= 223) $i++;
elseif($value >= 224 && $value <= 239) $i = $i + 2;
elseif($value >= 240 && $value <= 247) $i = $i + 3;
else die('Not a UTF-8 compatible string');
}
$count++;
}
return(substr($str,$start_position,$end_position-$start_position));
}
?>
一个比较全面的截取函数(多用于采集内容的分析),有需要的朋友可以看看。
其实是二个函数哦,注意咯。
<?php
/*
采集截取函数,主要用于分析采集的内容
getcon - 截取后去掉html字符,并去掉空格
getcon2 - 单纯截取,直接返回截取内容。
参数:
$par可接受两种格式:
1.前面字符{DATA}后面字符
2.正则表达式
*/
function getcon($pat,$str){
$title_var=explode()("{DATA}",$pat);
if(count($title_var)>1){
$title_1=explode($title_var[0],$str);
$title_2=explode($title_var[1],$title_1[1]);
return strip_s(strip_tags()($title_2[0]));
}else{
preg_match_all($pat,$str,$res);
return strip_s(strip_tags($res[1][0]));
}
}
function getcon2($pat,$str){
$title_var=explode ("{DATA}",$pat);
if(count($title_var)>1){
$title_1=explode($title_var[0],$str);
$title_2=explode($title_var[1],$title_1[1]);
return $title_2[0];
}else{
preg_match_all($pat,$str,$res);
return $res[1][0];
}
}
function strip_s($str){
$str = preg_replace ("/(\s+)/", ' ', $str);
$str = str_replace()(chr(13),'',$str);
$str = str_replace(chr(10),'<br>',$str);
$str = ltrim($str);
$str = trim($str);
return $str;
}
?>
一个可以自动检测内容中的编码并进行转换的函数,供大家学习参考。
<?php
//---示例
$url = “http://www.163.com”;
$data = file_get_contents($url);
$data = my_encoding($data,”utf-8″);
echo “$data”;
//--函数
function my_encoding($data,$to)
{
$encode_arr = array(‘UTF-8′,’ASCII’,'GBK’,'GB2312′,’BIG5′,’JIS’,'eucjp-win’,’sjis-win’,'EUC-JP’);
$encoded = mb_detect_encoding($data, $encode_arr);
$data = mb_convert_encoding($data,$to,$encoded);
return $data;
}
?>