php計算字符串長度:utf8編碼
中文當作1個字符處理(strlen默認當作兩個字符)
上函數:
/** * 計算 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://blog.snsgou.com - PHP博客"; echo strlen_utf8($str);
項目中,用到發短信功能,但是每條短信如果字數超過70,會作為一條新的短信發送,所以在記錄發送短信日志時,需要計算下文字個數!
英文、中文統一為一個字來計算,上面的 strlen_utf8($str) 正好可以解決這個問題。