PHP中英文字符长度判断
$content = $_POST['content'];
$type = judgeEnCn($content);
if (!$type) {
$data = array('state' => 200, 'msg' => '推荐内容不能超过600字或200个单词');
echo json_encode($data);die;
}
/*
* 字符串长度验证规则
* */
function judgeEnCn($str)
{
if (empty($str)) return false;
$language = self::EnglishOrChinese($str);
switch ($language) {
case 'ENGLISH':
$str = str_replace(' ', ' ', $str); // 将全角空格替换为半角空格
$arr = explode(' ', $str);
$arr = array_filter($arr); // 清理值为空的数据
// $arr = array_values($arr); // 重新索引
$arrLength = count($arr);
if ($arrLength > 200) {
return false;
}
break;
default:
if (mb_strlen($str) > 600) {
return false;
}
break;
}
return true;
}
/*
* 判断给定字符串是
* 纯英文:ENGLISH
* 纯汉字:CHINESE
* 英汉混合:MIXTURE
*/
private function EnglishOrChinese($str)
{
$mb = mb_strlen($str, 'utf-8');
$st = strlen($str);
if ($st == $mb)
return 'ENGLISH'; //'纯英文';
if ($st % $mb == 0 && $st % 3 == 0) {
return 'CHINESE'; //'纯汉字';
} else {
return 'MIXTURE'; //'汉英混合';
}
}
EnglishOrChinese() 方法借鉴了:https://blog.csdn.net/carrousel0516/article/details/90229209