要点:
1.检查文件或目录是否存在;2.读取文件;3.字符串编码格式
1、检查文件或目录是否存在
•bool file_exists ( string $filename )
•bool is_file ( string $filename )
•bool is_dir ( string $filename )
返回值:若$filename 存在返回true,反之false
<?php
header('content-type:text/html;charset=utf-8');
$file="student3.txt";
if(!file_exists($file)){
die('文件不存在');
}
2.读取文件
•file_get_contents
-- 将整个文件读入一个字符串(注意:文件内容不多,会一次将所有内容读取出来)
$str=file_get_contents($file);
echo $str;
•fopen
--打开文件或URL
返回值:成功返回文件指针资源,失败返回false
mode 参数的可能的值
mode 说明 "r" 只读方式打开,将文件指针指向文件头。 "r+" 读写方式打开,将文件指针指向文件头。 "w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 "w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 "a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 "a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 "x" 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
"x+" 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
错误或异常:若打开失败,会产生一个E_WARNING 级别的错误信息,可以用 @屏蔽
$fp=@fopen($file1,'r');//以只读的方式打开文件
if(false ===$fp) die('打开文件失败');
•fclose
-- 关闭一个已打开的文件指针
返回值:成功返回true,失败返回false
fclose($fp);//关闭文件
•fgets
--从文件指针中读取一行
返回值:从 file 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。若失败,则返回 false。
<?php
$file = fopen("test.txt","r");
echo fgets($file);
fclose($file);
?>
3.字符串编码格式
常用字符串编码格式:ASCII、GB2312、GBK、UTF-8
区别:
ASCII:只包含常用的英文字母、数字、以及一些特殊字符,还有部分的控制字符,每个字符由占用一个字节的存储空间,因为最多只包含127个字符,而一个字节(8bit)最多可以存256(2^8)个字符,故其最高位都为0。
GB2312:包含常用的中文字符且兼容ascii编码,在gb2312编码中,ascii字符还是跟原来一样占用一个字节,一个中文字符占用2个字节,ascii字符的码值在0-127之间,中文字符的两个字节的码值都是在127-256之间。
GBK:gbk也是一种中文编码,其兼容gb2312编码,并且比gb2312包含了更多的汉字,与gb2312不同的是gbk在存储中文时,第一个字节码值在127-256之间,第二个字节的码值在0-256之间,所以gbk能表示更多的汉字。
UTF-8:大部分的中文在utf8中都占3个字节
注意:中文用gb2312或gbk一个字符占2个字节,用utf8一个字符占3个字节
!!!!在header中utf-8加不加 “-” 都可以
set_charset中utf8不可以加 “-”
iconv和mb_convert_encoding里utf-8一定要加 “-”
•iconv --字符串按要求的字符编码来转换
$str=iconv('gb2312', 'utf-8', $str);
•mb_convert_encoding --转换字符编码
if($encoding !='UTF-8'){
$str=mb_convert_encoding($str, 'utf-8','gb2312');
}
•mb_detect_encoding --检测字符编码
$encoding=mb_detect_encoding($str,array("ASCII","UTF-8","GB2312","GBK","BIG5"));
***EUC-CN是gb2312编码的一种表示方法