php字节
‘壹’ php 几个字节 函数
有两个函数可以取PHP字符串长度
----------------------------------------------------------------------
strlen — 获取字符串长度
int strlen ( string $string )
返回给定的字符串 string 的长度。参数 string 需要计算长度的字符串。
返回值 成功则返回字符串 string 的长度;如果 string 为空,则返回 0。
----------------------------------------------------------------------
mb_strlen — 获取字符串的长度 (PHP 4 >= 4.0.6, PHP 5)
mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
获取一个 string 的长度。
参数 str 要检查长度的字符串。
encoding 参数为字符编码。如果省略,则使用内部字符编码。
返回值
返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。
如果给定的 encoding 无效则返回 FALSE。
特别要注意的是:
有关中文的问题。PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在UTF-8编码下,一个汉字占3个字节)。
采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。
‘贰’ php处理字节流
字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
字符流和字节流都是什么
流就是stream. 一个连续的字节队列。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。
字节流与字符流主要的区别是他们的的处理对象
字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
‘叁’ php 整型占几个字节
据官方资料:
整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。 PHP 不支持无符号整数。Integer值的字长可以用常量PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量PHP_INT_MAX来表示。
‘肆’ 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);
‘伍’ php怎么判断一个字所占的字节数
GB 18030的双字节部分完全采用了GBK的内码系统。在此基础上,做了四字节扩展,四个字节的编码空间依次是:0x81到0xFE,0x30到0x39,0x81到0xFE,0x30到0x39。总共1,587,600个码位
就是说你不能仅仅判断一个字节,如果第二个字节的值是在0x30到0x39范围里时,他就是4字节的汉字了
‘陆’ php中逗号占几个字节
php中逗号占2个字节,php中不同的编码格式下字符占用的字节是不同的。ANSI编码格式下一个中文字符占2个字节,一个英文字符占1个字节。
‘柒’ php里字节数组 怎么理解
PHP的字符串都是字节数组(或者叫字节串)。传言到PHP6 会改成真正的unicode字符串,但目前PHP4、5的字符串都只是字节串。
$a='你好';
echo $a[0];//这时显示的是一个字节,而不是字符‘你’
PHP中所有的字符串函数,比如substr、strpos、strcmp等等都注明了“binary-safe二进制安全”,表明这些函数只是处理字节,而非处理字符。
形成的原因:PHP早期和C一样,仅仅兼容ASCII码,而ASCII码的一个字符等同一个字节。
所以目前PHP的字符和字节是基本同义的,处理中文需要multibyte char多字节字符的MB模块。
到PHP6才会改变
‘捌’ PHP怎么获取字符串长度
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。