字符串处理

字符串截取

substr(); 返回字符串的一部分。

echo substr("Hello world",6)."<br>";输出 world
echo substr("Hello world",-4)."<br>";输出 orld
echo substr("Hello world",6,6)."<br>";输出 world
echo substr("Hello world",0,-6)."<br>";输出 Hello

/* 标题 大于八个字 且 大于十个字 的时候进行截取前八个字 */

if(mb_strlen($text) > 8 && mb_strlen($text) > 10){
    $title_web = mb_substr($text, 0, 10, 'utf-8').'...';
}

// 分割文字

substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,

这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,

只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

举个例子:

<?php
    echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>
输出:这样一来我的字
<?php
    echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');
?>

输出:这样一

从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。


PHP实现中文字串截取无乱码的方法

function GBsubstr($string, $start, $length) {
	if(strlen($string)>$length){
		$str=null;
		$len=$start+$length;
		for($i=$start;$i<$len;$i++){
			if(ord(substr($string,$i,1))>0xa0){
				$str.=substr($string,$i,2);
				$i++;
			}else{
				$str.=substr($string,$i,1);
			}
		}
		return $str.'...';
	}else{
		return $string;
	}
}

【实现中文字串截取无乱码的方法--适用于utf-8】

function substr_text($str, $start=0, $length, $charset="utf-8", $suffix="")
{
	if(function_exists("mb_substr")){
		return mb_substr($str, $start, $length, $charset).$suffix;
	} 
	elseif(function_exists('iconv_substr')) 
	{
		return iconv_substr($str,$start,$length,$charset).$suffix;
	}
	$re['utf-8']  = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
	$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
	$re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
	$re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
	preg_match_all($re[$charset], $str, $match);
	$slice = join("",array_slice($match[0], $start, $length));
	return $slice.$suffix;
}

  // 先获取code 有几个零 然后code 加1 在 补零 生成新的code(也是新的土地编号)

for($i=0; ;++$i) {
    if(! isset($result['code']{$i})) break;
    if($result['code']{$i}!=='0') ++$count;
}

$code = $result['code'] + 1;
    for($i=0;$i<$count;$i++){
    $code = '0'.$code;
}

字符串替换

strtr()  转换字符串中特定的字符。

把字符串中的字符 "ia" 替换为 "eo":

echo strtr("Hilla Warld","ia","eo");
输出 Hello World

substr_replace();把字符串的一部分替换为另一个字符串

echo substr_replace("Hello","world",0);

字符串合成数组

explode()   把字符串打散为 数组:

$str = "hello world. I love Shanghai!";
print_r(explode(" ",$str));

implode() 把数组元素组合为字符串:

implode(" ",$arr);

str_split() 把字符串 "Shanghai" 分割到数组中:

print_r(str_split("Shanghai"));

数组合成字符串

implode(" ",$arr);

序列化 反序列化

serialize(); 序列化 ;

unserialize(); 反序列化 ;


字符串查找

strripos()  查找字符串在另一字符串中最后一次出现的位置

strrpos()   查找字符串在另一字符串中最后一次出现的位置(对大小写敏感)。

strspn();返回在字符串中包含的特定字符的数目。

echo strspn("abcdefand","abc"); 输出 3

is_array() ;判断是否是数字;

数字处理 小数点 位数 四舍五入

1  sprintf("%.2f", $num)     直接生成两位小数,自带四舍五入

2  number_format($num, 2)       生成两位小数,不四舍五入

3  round($num, 2)                      四舍五入为2为小数