php获取字符串长度
『壹』 php 输出字符长度
mb_substr("字符串",开始索引抄(int),结束索引(int),“袭utf-8”)
按照上面的写就是了
如果用substr来写的话 utf-8的格式一个中文占3个长度gbk和gb2312一个中文占2个长度
而mb_substr来写的话 不管什么格式 只要是占一个位置 都是算作一个长度
但是用mb_substr必须注意几点
在php.ini中 就是php的配置文件中必须开启mb_substr这个符号 就是把前面份额分号给去掉
还有就是后面必须写上你的编码格式如“utf-8”或者gb2312之类的
如果你想用这个mb_substr的话 并且那个字符串中还有英文的话那是绝对会出错的
至于写的话 楼主自己写一下吧 查一下文档不久OK了吗 还要别人写出来 这点自学能力都没有
『贰』 用PHP统计字符串长度
PHP 计算字符串长度代码示例如下,具体逻辑在代码中。
<?php
//统计字符串长度,适用中文,字母,数字混编
functionget_strlength($str){
//强字符串统一转换为utf-8格式
$encode=mb_detect_encoding($str,array('ASCII','UTF-8','GB2312','GBK'));
if(!$encode=='UTF-8'){
$str=iconv('UTF-8',$encode,$str);
}
//初始化字符串长度
$count=0;
//循环统计
for($i=0;$i<strlen($str);$i++){
//获取字符串首字母对应的ASCII值
$value=ord($str[$i]);
if($value>127){
$count++;
if($value>=192&&$value<=223){
$i++;
}elseif($value>=224&&$value<=239){
$i=$i+2;
}elseif($value>=240&&$value<=247){
$i=$i+3;
}else{
die('字符串异常!!');
}
}
$count++;
}
return$count;
}
//测试
echoget_strlength("中国人2015年的gdp为:6666");
//25
?>
『叁』 php判断字符串长度问题
if(!preg_match("/.{2,30}/",$City)){
exit("请选择城市!");
}
这个是正则表达式的写法,不懂的话建议你学习下正则表达式,开发实用性很高
前后/ 是起始结束符号
. 代表任意字符
{2,30} 前一个内容2次 ~ 30次
『肆』 php,怎么获取指定长度的字符串
<?php
echo substr(需要截取字符串, 起止数, 需要截取的长度);
?>
截取字符串只支持英文。如果字符串包含中文。或混排。以及文字 编码。gb2312 和 utf8 。截取方式就不一样了。
推荐使用 bugfree 的截取字符串函数
例子:/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang <[email protected]>
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}
$String = "CodeBit.cn -- 简单、精彩、通用";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>
『伍』 在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;?>上面的程序,能不能看懂。有问题再问。
『陆』 PHP获取字符串长度
可以用PHP自带的函数计算字符长度,在php中,如果选择的是/gb2312编码,则一个中文占两个字节,如果是utf-8编码,则一个中文占三个字节。而英文字符英文字符占1字节。比如:
//utf-8编码时
echo "http://coderschool.cn你好"."<br/>";
echo strlen("http://coderschool.cn你好");
输出结果:
http://coderschool.cn你好
27
//gbk下
echo strlen("http://coderschool.cn你好");
输出结果:
25
在输出字符串个数时,如果想将一个中文当成长度为1时,则需要另外写函数实现,可以通过正则或者循环
的方式实现,正则的方法:
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all("/./us", $string, $match);
// 返回单元个数
return count($match[0]);
}
echo utf8_strlen("你好呀AAA");
输出结果:6
另一种方法 gbk/gb2312下:
function new_strlen($str)
{
$len=strlen($str);
$i=0; $j=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i]))
{
//gbk,gb2312加2,一个中文2个字节
$i+=2;
} else {
$i+=1;
}
$j++;
}
}
echo new_strlen("你好呀AAA");
输出:6
utf-8下:
function new_strlen($str)
{
$len=strlen($str);
$i=0; $j=0;
while($i<$len)
{
if(preg_match("/^[".chr(0xa1)."-".chr(0xf9)."]+$/",$str[$i]))
{
//utf-8加3,一个中文3个字节
$i+=3;
} else {
$i+=1;
}
$j++;
}
}
echo new_strlen("你好呀AAA");
输出:6
『柒』 php中截取字符串指定长度
substr — 返回字符串的子串
说明
substr ( string $string , int $start [, int $length ] ) : string
返回字符串 string 由 start 和 length 参数指定的子字符串。
参数
string
输入字符串。必须至少有一个字符。
start
如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。
如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。
如果 string 的长度小于 start,将返回 FALSE。
『捌』 PHP获取中英混合字符串长度的方法
今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。
.代码如下:
$str
=
'Hello
world!';
echo
strlen($str); //
输出12
然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的。在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节。
.代码如下:
$str
=
'你好,世界!';
echo
strlen($str); //
GBK或GB2312下输出12,UTF-8下输出18
而我们在判断字符串长度时往往需要判断的是字符的数量,而非字符串所占字节数,如在UTF-8下的这段PHP代码:
.代码如下:
$name
=
'张耕畅';
$len
=
strlen($name);
//
输出
FALSE,因为在UTF-8下三个中文占9个字节
if($len
>=
3
&&
$len
<=
8){
echo
'TRUE';
}else{
echo
'FALSE';
}
那么有什么方便而实用的方法可以获得含中文字符串的长度呢?可以用正则计算出中文字符的个数,在GBK/GB2312编码下除以2,UTF-8编码下则除以3,最后再加上非中文字符串的长度,但这样未免太过麻烦。
WordPress这么一段代码,借鉴如下:
.代码如下:
$str
=
'Hello,世界!';
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]); //
输出9
思想是用正则表达式将字符串分割成单个字符,并直接用count计算出匹配到的字符数,便是我们想要的结果了。
但以上代码在UTF-8编码下并不能处理GBK/GB2312的中文字符串,因为GBK/GB2312的中文字符会被识别为两个字符而计算出来的中文字符数量会翻倍,于是我想到了这么一个办法:
.代码如下:
$tmp
=
@iconv('gbk',
'utf-8',
$str);
if(!empty($tmp)){
$str
=
$tmp;
}
preg_match_all('/./us',
$str,
$match);
echo
count($match[0]);
可兼容GBK/GB2312及UTF-8编码,经小量数据测试通过,但暂未确定是否完全正确,盼有大牛指点一二。
以上本意是为了框架可以兼容多种编码格式,但一般在日常开发中,一个项目是已经可以确定为何种编码的,因此可以使用以下函数来方便地获取字符串长度:
.代码如下:
int
iconv_strlen
(
string
$str
[,
string
$charset
=
ini_get("iconv.internal_encoding")
]
)
『玖』 php 怎么计算字符串长度
使用strlen函数
intstrlen(string$string)
php文档中的例回子答
<?php
$str='abcdef';
echostrlen($str);//6
$str='abcd';
echostrlen($str);//7
?>
『拾』 PHP怎么获取字符串长度
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下回面简要的剖析一下PHP对中文字答符串长度的处理:
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。