读取文件与字符串编码

要点:

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编码的一种表示方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值