zoukankan      html  css  js  c++  java
  • 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) 正好可以解决这个问题。

  • 相关阅读:
    Day3-B-Round Marriage CodeForces-981F
    Day3-A-Problem H. Monster Hunter HDU6326
    Day3-G
    Day3-I-Squares POJ2002
    Day3-M-Cable master POJ1064
    Day3-N
    Day3-O-Median POJ3579
    Day3-P
    Day3-L-Cup HDU2289
    LeetCode "Majority Element"
  • 原文地址:https://www.cnblogs.com/52php/p/5677999.html
Copyright © 2011-2022 走看看