Drupal 7 开发内部培训资料, 分头诗人

drupal 有一要求是允许最多输入8个中文或者16个字母 但是DRUPAL的字段里设置8的话 他只允许输入8个字母或者8个中文 该怎么办?

赞成!
0
否决!

现有一要求是允许最多输入8个中文或者16个字母 但是DRUPAL的字段里设置8的话 他只允许输入8个字母或者8个中文 该怎么办

3 个回答

赞成!
0
否决!

这估计是编码问题,

<?php
//测试时文件的编码方式要是UTF8
$str='中文a字1符';
echo strlen($str).'<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
/*
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 
*/
//利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2; 
//例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10. 
echo mb_internal_encoding();

 

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

 

 

赞成!
0
否决!

不是页面上输入的字

是在DRUPAL里面添加内容这

赞成!
0
否决!

drupal 添加内容是form表单,表单都能通过 hook_form_alter 改写,改写他们的验证方式就可以。