Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1236078
  • 博文数量: 135
  • 博客积分: 10576
  • 博客等级: 上将
  • 技术积分: 1670
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-11 20:49
个人简介

不疯魔,不成活! --疯魔老杨(Crazy.LaoYang) http://www.inotes.cn/

文章分类

全部博文(135)

文章存档

2014年(4)

2012年(13)

2011年(5)

2010年(30)

2009年(56)

2008年(27)

分类:

2009-05-22 08:18:55

近来学习PHP制图,其中用PHP读取文本文件,就是将文本文件用PHP组成数组,之后进行后续操作。
 
主要用到的函数有:fopen(); feof(); fgets(); explode();fclose()。
 
下面先看一个例子:
文本文件:adata.txt
0501 88
0502 90
0503 80
0504 85
0505 88
 
PHP文件:rtxt.php
$file = "d:\adata.txt";          //变量赋值
$fp = fopen ($file, "r");        //以只读方式打开文件
$i=0;                            //i=0
while (!feof ($fp)) {            //while循环,条件:没到文件的末端。
    $buffer = fgets($fp, 4096);  //fgets() 函数用于从文件中逐行读取文件,,读取的字节数。默认是 1024 字节。
    $block=explode(" ",$buffer); //用“空格”对操作的一行($buffer)进行分割,返回由字符串组成的数组。
    $col1[$i]=$block[0];         //组建数组(文本的每一列)
    $col2[$i]=$block[1];         //组建数组(文本的每二列)
echo $col1[$i]." ";              //echo数组的每个元素
echo $col2[$i]."
";
    $i=$i+1;                     //通过while循环,带动i值递增,实现数组构建。
}
fclose($fp);                     //关闭文件。
?>
 
组建的数组为:
$col1=Array[5]
 (
    [0]=>0501
    [1]=>0502
    [2]=>0503
    [3]=>0504
    [4]=>0505
 )
$col2=Array[5]
 (
    [0]=>88
    [1]=>90
    [2]=>80
    [3]=>85
    [4]=>88
 )
 
总结:函数学习
# fopen()
fopen() 函数用于在 PHP 中打开文件,此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件.

模式      描述
r         只读。在文件的开头开始。
r+        读/写。在文件的开头开始。
w         只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+        读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a         追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
a+        读/追加。通过向文件末端写内容,来保持文件内容。
x         只写。创建新文件。如果文件以存在,则返回 FALSE。
x+        读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
注释:如果 fopen() 无法打开指定文件,则返回 0 (false)。
 
示例:
如果 fopen() 不能打开指定的文件,下面的例子会生成一段消息:

$file=fopen("welcome.txt","r") or exit("Unable to open file!");
?>

 
#feof()
检测 End-of-file
feof() 函数检测是否已达到文件的末端 (EOF),在循环遍历未知长度的数据时,feof() 函数很有用。注释:在 w 、a 以及 x 模式,您无法读取打开的文件!
if (feof($file)) echo "End of file";
 
#fgets()
fgets() 函数用于从文件中逐行读取文件。在调用该函数之后,文件指针会移动到下一行。
例子
下面的例子逐行读取文件,直到文件末端为止:
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
while(!feof($file))
  {
  echo fgets($file). "
";
  }
fclose($file);
?>
另外还有个函数fgetc(),与fgets()相似,fgetc() 函数用于从文件逐字符地读取文件,在调用该函数之后,文件指针会移动到下一个字符。
如:
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!feof($file))
  {
  echo fgetc($file);
  }
fclose($file);
?>
 
# explode()
描述
array explode ( string separator, string string [, int limit] )
用一个字符串分割另一个字符串,此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 separator 为空字符串(""),explode() 将返回 FALSE。如果 separator 所包含的值在 string 中找不到,那么 explode() 将返回包含 string 单个元素的数组。
如果 limit 参数是负数,则返回除了最后的 limit 个元素外的所有元素。此特性是 PHP 5.1.0 中新增的。
例子 1. explode() 示例
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?> 
 

例子 2. limit 参数示例
$str = 'one|two|three|four';
// 正数的 limit
print_r(explode('|', $str, 2));
// 负数的 limit
print_r(explode('|', $str, -1));
?> 
以上示例将输出:
Array
(
    [0] => one
    [1] => two|three|four
)
Array
(
    [0] => one
    [1] => two
    [2] => three
)
 
阅读(4030) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2009-06-22 16:23:13

很好,頂!