A. php怎么获取字符串长度
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
B. 利用PHP函数计算中英文字符串长度的方法
本文实例讲述了利用PHP函数计算中英文字符串长度的方法。分享给大家供大家参考。具体实现方法如下:
一般来说大家知道英文字符占一个字节,而中文字符gbk占两个字符,utf8占三个字符,很多人印象中php计算字符串长度就是strlen()函数,其实不然,它计算的是字节的长度而非字符的长度,那么如何获取一个字符串中字符的长度呢?还有有mb_strlen().
具体代码如下:
复制代码
代码如下:echo
$str
=
'PHP点点通';
echo
strlen($str);
//3*1+3*3=12
echo
mb_strlen($str,
'gb2312');
//3*1+3*2=9
echo
mb_strlen($str,
'utf-8');
//6
C. php文件中,一个字符串最长可以有多长
你说的是php的变量能存多少范围吧?比如
$str='IamChinese';
一般来说,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);
D. php怎么把字符串转化为数组
1. 怎么把字符串转成数组
$txt = str_replace("[","",$txt); 替换符号
$txt = str_replace("]","",$txt); 替换符号
$txt = str_replace(" " "",$txt); 这个是去掉中改空格
$txt = str_replace("=>",",",$txt); 替换符号
$array = explode(',',$txt); 字符串转数组
var_mp($array);
搞定收工
2. 把字符串转换卖凳判成数组
$str1='把中文转换成数组粗薯'; $str2='abcdefg'; $str3='0123456789'; echo $str1{2}; echo mb_strlen($str1,'utf-8');输出字符串的长度,当然用utf-8编码, function str($str){ $arr=array(); for($i=0;$i
。
E. 最准确的php截取字符串长度函数
说是最精确截取长度,其实我也不敢确定是否是最精确的,具体有多精确看下面的效果就知道了:
先上测试用的字符串:
<?php
header("Content-Type:text/html;charset=utf-8");
echo
cn_substr_utf8('我是一个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('ai\'2145m
a
ch3我[是一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('【我,是一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('我是一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('我是,一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('我,是,一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('我是asd一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('【我i\'m[是一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('【i\'m
a
ch我[是一,个,和哈,哦也,,国家!',12);
echo
'<br
/>',cn_substr_utf8('【i\'2145m
a
ch3我[是一,个,和哈,哦也,,国家!',12);
下面是精确截取字符串的效果图:
具体函数代码如下:
//utf-8中文截取,单字节截取模式
function
cn_substr_utf8($str,$length,$append='...',$start=0){
if(strlen($str)<$start+1){
return
'';
}
preg_match_all("/./su",$str,$ar);
$str2='';
$tstr='';
//www.phpernote.com
for($i=0;isset($ar[0][$i]);$i++){
if(strlen($tstr)<$start){
$tstr.=$ar[0][$i];
}else{
if(strlen($str2)<$length
+
strlen($ar[0][$i])){
$str2.=$ar[0][$i];
}else{
break;
}
}
}
return
$str==$str2?$str2:$str2.$append;
}
如果大家认为还不够准确大家可以在此基础上进行改进,或者是创新,希望这篇关于php截取字符串长度函数的文章对大家的学习有所帮助。
F. php如何获取中文字符长度,一个中文字符算一个
在PHP中专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启。要在php.ini中开启即可。获取长度实例:1 ,utf-8环境下使用
header('Content-type:text/html;charset=utf-8');
/**
*可以统计中文字符串长度的函数
*@param$str要计算长度的字符串
*@param$type计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists('mb_strlen')){
returnmb_strlen($str,'utf-8');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str='我们都是中国人啊,ye!';
$len=abslength($str);
var_mp($len);//return12
$len=abslength($str,'1');
echo'<br/>'.$len;//return22
/*
utf-8编码下截取中文字符串,参数可以参照substr函数
@param$str要进行截取的字符串
@param$start要进行截取的开始位置,负数为反向截取
@param$end要进行截取的长度
*/
functionutf8_substr($str,$start=0){
if(empty($str)){
returnfalse;
}
if(function_exists('mb_substr')){
if(func_num_args()>=3){
$end=func_get_arg(2);
returnmb_substr($str,$start,$end,'utf-8');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}
}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args()>=3){
$end=func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2='wo要截取zhongwen';
echo'<br/>';
echoutf8_substr($str2,0,-4);//returnwo要截取zhon
2,支持gb2312,gbk,utf-8,big5 中文截取方法
/*
* 中文截取,支持gb2312,gbk,utf-8,big5
*
* @param string $str 要截取的字串
* @param int $start 截取起始位置
* @param int $length 截取长度
* @param string $charset utf-8|gb2312|gbk|big5 编码
* @param $suffix 是否加尾缀
*/
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
{
if(mb_strlen($str, $charset) <= $length) return $str;
$slice = mb_substr($str, $start, $length, $charset);
}
else
{
$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
preg_match_all($re[$charset], $str, $match);
if(count($match[0]) <= $length) return $str;
$slice = join("",array_slice($match[0], $start, $length));
}
if($suffix) return $slice."…";
return $slice;
}
G. 在php中,怎样得到一个文本框中的字符串的长度
<input name="submit" type="submit" class="button" id="submit1" value="提交"></input></form><?php$str = $_POST["text1"]; //获取文本框的字符串赋予 $str $a="字符串长度为:"; $b=strlen($str); //用strlen函数返回$str的字符串长度echo $a;echo $b;?>上面的程序,能不能看懂。有问题再问。