• PHP计算字符串长度,PHP如何计算短信的长度/字数?


    PHP计算字符串长度,包括计算英文、GBK、UTF-8多种字符集下PHP如何计算字符串长度。

    英文字符串长度,strlen()是PHP自带的计算英文字符串的函数。

    GBK字符串长度

    中文字符计算为2个字符,英文字符计算为1个,可以统计中文字符串长度的函数。

    function abslength($str)
    {
    	$len = strlen($str);
    	$i = 0;
    	while ($i < $len)
    	{
    		if (preg_match("/^[" . chr(0xa1) . "-" . chr(0xff) . "]+$/", $str[$i]))
    		{
    			$i += 2;
    		}
    		else
    		{
    			$i += 1;
    		}
    	}
    
    	return $i;
    }

    UTF8字符串长度

    下面定义的strlen_utf8函数可以统计UTF-8字符串的长度,但不同的是,该函数并不考虑字节,这有些类似 Javascript 中字符串的length方法,一个字符全部按 1 个长度计算。

    <?php
    /**
     * 计算 UTF-8 字符串长度(忽略字节的方案)
     * 
     * @param string $str
     * @return int
     */
    function strlen_utf8($str)
    {
    	$i = 0;
    	$count = 0;
    	$len = strlen($str);
    	while ($i < $len)
    	{
    		$chr = ord($str[$i]);
    		$count++;
    		$i++;
    		if ($i >= $len)
    		{
    			break;
    		}
    		if ($chr & 0x80)
    		{
    			$chr <<= 1;
    			while ($chr & 0x80)
    			{
    				$i++;
    				$chr <<= 1;
    			}
    		}
    	}
    
    	return $count;
    }
    
    $str = "http://52php.cnblogs.com - PHP博客";
    echo strlen_utf8($str);
    ?>

    PHP如何计算短信的长度/字数?

    项目中,用到发短信功能,但是每条短信如果字数超过70,会作为一条新的短信发送,所以在记录发送短信日志时,需要计算下文字个数!

    英文、中文统一为一个字来计算,上面的 strlen_utf8($str) 正好可以解决这个问题。

  • 相关阅读:
    Guava学习笔记(4):Ordering犀利的比较器
    Guava学习笔记(3):复写的Object常用方法
    Guava学习笔记(1):Optional优雅的使用null
    [BZOJ1076][SCOI2008]奖励关
    [BZOJ1821][JSOI2010]部落划分
    [BZOJ1041]圆上的整点
    [Luogu2324]八数码难题
    [BZOJ1085][SCOI2005]骑士精神
    [BZOJ3109] [cqoi2013]新数独
    [LnOI2019]长脖子鹿省选模拟赛 东京夏日相会
  • 原文地址:https://www.cnblogs.com/52php/p/5677999.html
Copyright © 2020-2023  润新知