PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了灵武免费建站欢迎大家使用!
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
用string substr ( string $string , int $start [, int $length ] );
div class="about"?php echo substr($aboutus,0,10); ?/div显示前十个字符,更多PHP学习请看
如果你只是限制用户名或者密码的长度,那就没必要用正则
$user = $_POST['user'];
if ( strlen( $user ) 6 || strlen( $user ) 12 ) {
用户名长度只能6-12位
}
如果是要限制长度,并且只能是字母数字的话, 那就可以用正则
if ( !preg_match('/^\w{6,12}$/is') ) {
用户名必须是字母数字下划线组合,6-12位
}
至于你第二个问题,估计是编码没有统一,否则不可能出现那种字符的
你说的是php的变量能存多少范围吧?比如
$str = 'I am Chinese';
一般来说,php不限制变量的长度
你可以打开你的php.ini,里面有这样的配置语句:(我用的mssql数据库,就拿它举例吧)
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 - 2147483647. Default = 4096.
;mssql.textsize = 4096
可见php确实对变量大小没有限制(2G的限制目前确实可以视为不存在),只是在默认的配置下被限制到了4096字节,亦即2048个汉字。
如果你想增大php的变量最大字节的话,可以在php.ini中修改以下代码:
ini_set("mssql.textsize",200000);
ini_set("mssql.textlimit",200000);