PHP基础 正则/文件系统 第十三天

1

<?php
$string='
[b]这是一个记事本[/b]
[i]php的日常笔记。[/i]
[u]你们想我知道什么吗?[/u]
[font=黑体]不是想?[/font]
[color=Red]我也想[/color]
[color=Magenta]但是。[/color]
[qq]1378353651[/qq]
[url=http://www.xlxz.org]心灵,情感,日记[/url]';
$pattern=array(
   '/\[b\](.*?)\[\/b\]/',
   '/\[i\](.*)\[\/i\]/U',
   '/\[u\](.*?)\[\/u\]/',
   '/\[font=(.*?)\](.*?)\[\/font\]/',
   '/\[color=(\w+)\](.*)\[\/color\]/U',
   '/\[qq\]([1-9]\d{4,10})\[\/qq\]/U',
   '/\[url=(.*?)\](.*?)\[\/url\]/',
   
   
);
$replace=array(
   '<b>\\1</b>',
   '<i>\\1</i>',
   '<u>\\1</u>',
   '<font face="\\1">\\2</font>',
   '<font color="\\1">\\2</font>',
   '<a href="http://wpa.qq.com/msgrd?V=1&Uin=\\1&amp;Site=xlxz&amp;Menu=yes" target="_blank"><img src="http://wpa.qq.com/pa?p=1:\\1:1" border="0"></a>',
   '<a href="\\1" target="_blank">\\2</a>',
   
   
   
   );
$arr=preg_replace($pattern,$replace,$string);
echo $arr;
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php  
//php 抓网页  
 
 
 
$url='http://php.xlxz.org/2012/11/158/';  
 
//获取一个文件,也可以获取远程文件  
$string=file_get_contents($url);  
 
 
 
preg_match('/<ul class="mode-txtlink c-lists">(.*?)<\/ul>/smi',$string,$arr);  
 
 
 
preg_match_all('/<a href="(.*?)".*?<\/a>/',$arr[1],$links);  
 
 
foreach($links[1] as $val){  
 
   $str=file_get_contents($val);  
 
   preg_match('/<h1>(.*?)<\/h1>/i',$str,$title);  
 
 
   file_put_contents(basename($val),$title[1]);  
 
     
 
}
?>

php文件系统

函数:

fopen('文件路径','打开方式');   返回一个资源类型

fclose(资源)关闭文件

fwrite()写入文件

fread读取文件,读取文件到最后,会返回false

feofend of file 判断文件是否到达结尾处,如果到达结尾处,返回true,



fputsfwrite的别名函数

fgets一行一行读

fgetc每次读一个字符

file将放入一个数组中

readfile读取并直接输出

ftell告诉文件指针所在位置

rewind将文件指针移到文件的开始处

fseek

SEEK_SET直接设置到什么位置上面去,默认值

SEEK_CUR在当前位置上面加上多个字节




LOCK_SH   共享锁,主要在读取的时候进行和

LOCK_EX独占锁 主要用于写入的时候,上WC,加上锁的例子

LOCK_UN释放锁

LOCK_NB附加锁

如果没有到结尾处就返回false ,因此我可以这儿进行取反操作。


1,远程路径[要求你当机器能上网,并且php.ini当中准许你访问远程文件],通常只能读不能写。

2,本地路径    打开本地绝对路径,或者本地的相对路径

打开方式,打开模式。

W

本地文件系统路径,以操作系统的路径为准。

它不认服务器解析后的路径,它认当前文件在操作系统当中的路径。  

/  当时是指当前站点的根路径

/本地文件所在的分区的根目录

/ 是指目录分割符   linux目录分割符

\  也是目录分割符  windows目录分割符  






Windows目录分割符   /   \    因此,为了保障项目能够移致到其他操作系统当中去,我们在这里面用  /  windows  linux都能使用。



常量:

DIRECTORY_SEPARATOR   自动识别不同操作系统的目录分割符





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
$fp=fopen('yi.txt','r');
while(!feof($fp)){
   $t=fgetc($fp);
   echo $t;
}
fclose($fp);
file_put_contents('yi.txt','会不会覆盖呢?还是追加呢?');
echo file_get_contents('yi.txt');
   $arr=file('t.txt');
   var_dump($arr);
   readfile('t.txt');
   $t=fopen('love.txt','a+');
   echo ftell($t).'<br>';
   
   echo fread($t,5).'<br>';
   rewind($t);
   fseek($t,5,SEEK_SET);
   fseek($t,-6,SEEK_END);
   echo fread($t,1024);
   $fp=fopen('yi.txt','a+');
   flock($fp,LOCK_EX);
   fwrite($fp,'只是一个记事本?');
   flock($fp,LOCK_UN);
   fclose($fp);    
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
   //fopen('文件路径','打开方式');
   //$fp=fopen('e:/nixiaopi.txt','w');
   //var_dump($fp);
//     /   \    
   
   //echo 'd:'.DIRECTORY_SEPARATOR.'web'.DIRECTORY_SEPARATOR.'37'.DIRECTORY_SEPARATOR.
//  $fp=fopen('a.txt','w');
//w   写入模式,当文件不存在的时候,直接创建。当文件存在,则将原有内容全部清空。将文件指针移到文件的开始处
//
//
//  如果你有w模式,打开“某团”,产生的数据丢失,请不要找我来拷。我机器上没有。[重点]
//
//
//w+   与w模式相同,它是增强的w模式。它不仅可以进行写操作,还可以进行读取操作。
//
//
//r r模式      叫做只读模式,文件不存在,则返回一条警告,如果文件存在则打开文件。文件指针指到文件的开始处 [重点]
//
//
//  r+模式       增加的r模式,与r相同,可以进行写相关操作
//
//
//  x 异或模式  文件存在就返回false,文件不存在就创建,文件指针指到文件的开始处    [非重点,了解]
//
//  x+  增加的x模式
//
//  a追加模式   文件存在就打开文件,文件原有内容不清除,写入时,向文件的结尾处追加新的内容。在读取的时候,文件指针是指在开始处的,如果文件不存在则创建。文件存在,就打开。【重点】
//
//
//  a+  增加的a模式,功能更加强劲
//
//  b   二进制模式,与其他模式配合使用,是指,仅在windows下有效.linux下无效   [了解]
//
//  t   仅在windows下在有效,\r\n,\n   所以,它仅在windows下生效[了解]
////
//文件指针?
//
file_put_contents('nvren.txt','日常笔记');
   
   $fp=fopen('meinv.txt','ab');
   
   fwrite($fp,'看了!奥特慢也不行');
   //fwrite($fp,'nanren youxiu hen xinfu',3);
   
   
   while(!feof($fp)){
       echo fread($fp,1);
   }
       fclose($fp);
   var_dump($fp);
 
   $fp=fopen('nvren.txt','r');
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   echo fgets($fp).'<br>';
   fclose($fp);
?>