php函数_字符串函数_文件(目录)操作函数_文件上传

作者: 鲁智深 分类: PHP 发布时间: 2014-12-27 06:14

字符串函数

注意:字符串也有索引下标

1
2
3
     echo "<br/>-------字符串--------<br/>";
     $str = "abcdef";
     echo $str[0];

1、int strlen(字符串);

获取字符串的长度,返回int

1
2
3
4
5
6
     echo "<br/>-------字符串长度--------<br/>";
     $str = "abcdefabcdefabcdef";
     var_dump(strlen($str));
     echo "<br/>-------字符串(含中文)长度--------<br/>";
     $str = "ab我ef";
     var_dump(strlen($str));

2、int mb_strlen(字符串[,encode]);

获取含中文字符串的长度

1
2
3
     echo "<br/>-------字符串(含中文)长度--------<br/>";
     $str = "ab我ef";
     var_dump(mb_strlen($str,"utf-8"));

3、mix strpos(字符串,$find [,start]);

①获取字符串中某个字符第一次出现的位置,

1
2
3
4
     echo "<br/>-------字符串中某个字符第一次出现的位置--------<br/>";
     $str = "abcdefd";
     $res = strpos($str,"d");
     var_dump($res);

②加了start参数(起始位置)后查找,如果查找的字符串不存在,返回fasle

1
2
3
4
     echo "<br/>-------字符串中某个字符第二次出现的位置--------<br/>";
     $str = "abcdefd";
     $res = strpos($str,"d",4);
     var_dump($res);

③如果变量是不存在(0=>null),一定要用strpos($str,$find)!==false

1
2
3
4
5
6
7
8
     echo "<br/>-------判断非法字符--------<br/>";
     $str = "abcdefdi";
     $find = "a";
     if(strpos($str,$find)!==false){
         echo "含有非法字符{$find}";
     }else{
         echo "字符串正确";
     }

4、mix strrpos($string,$find[,$start]);

①获取$find在string中最后一次出现的位置

1
2
3
4
     echo "<br/>-------字符串中某个字符最后一次出现的位置--------<br/>";
     $str = "abcdefd";
     $res = strrpos($str,"d");
     var_dump($res);

②此函数是区分大小写的,用strripos不区分大小写

1
2
3
4
     echo "<br/>-------字符串中某个字符最后一次出现的位置(不区分大小写)--------<br/>";
     $str = "abcdefd";
     $res = strripos($str,"D");
     var_dump($res);

5、mix mb_strrpos($string,$find[,start][,encode]);

①获取含有中文字符串中,某个字符的位置

1
2
3
4
     echo "<br/>-------判断某个中文字符,出现的位置--------<br/>";
     $str = "ab我cdefd";
     $res = mb_strpos($str,"我","0","utf-8");
     var_dump($res);

②iconv_strpos($string,$find[,start][,encode]);功能相同

1
2
3
4
     echo "<br/>-------iconv_strpos判断某个中文字符,出现的位置--------<br/>";
     $str = "ab我cdefd";
     $res = iconv_strpos($str,"我","0","utf-8");
     var_dump($res);

6、mix strstr($string,$find);

①查找find在string中的位置,并且从这个字符位置开始截取字符串;没有返回false

1
2
3
     echo "<br/>-------从某个字符截取字符串--------<br/>";
     $str = "abcefdg";
     var_dump(strstr($str,"d"));

②stristr($string,$find);不区分大小写

7、mix strrchr($string,$find);

跟strstr功能相似,他是从找到的最后一个字符开始截取,实战用于截取后缀名

1
2
3
4
     echo "<br/>--------获取文件扩展名方法一---------<br/>";
     $str = "11.1.php";
     $str1 = strrchr($str,".");
     echo substr($str1,1);

8、string substr($string,$start[,$length]);

①从start开始截取,截取length个长度,常用与简介、摘要功能

1
2
3
     echo "<br/>-------substr从某个位置截取字符串--------<br/>";
     $str = "abcefdg我是鲁智深";
     var_dump(substr($str,7));

②如果$start和$length为负数,从字符串最后开始截取

③按位置截取中文字符串就是mb_substr($string,$start[,$length][,encode]);防止中文截取时出现乱码

注意:用到mb_开头的函数时候,这些函数依赖于php的php_mbstring.dll扩展文件,文件在php.ini中

9、string strrev($string);

反转字符串,是字符串首尾倒置

1
2
3
     echo "<br/>-------反转字符串--------<br/>";
     $str = "abcefdg";
     var_dump(strrev($str));

10、str_replace($find,$replace,$string);

替换字符串,在string中把find替换replace

1
2
3
     echo "<br/>-------替换字符串--------<br/>";
     $str = "abcefdg我是鲁智深";
     var_dump(str_replace("我","你",$str));

11、array explode($delimiter,$string);

将字符串转成数组,通过delimiter 分割成几段,然后把几个小段放到数组值中

1
2
3
4
     echo "<br/>-------字符串转数组--------<br/>";
     $str = "a*b*c*d";
     $res = explode("c",$str);
     var_dump($res);

获取文件扩展名

1
2
3
4
5
6
     echo "<br/>--------获取文件扩展名方法三---------<br/>";
     $str = "图片.a.jpg";
     $res = explode(".","$str");
     var_dump($res);
     echo count($res);
     echo $res[count($res)-1];

12、string implode($delimiter,$arr);

将数组拼接成字符串

1
2
3
     echo "<br/>-------数组转字符串--------<br/>";
     $arr = array(a,b,c,d,);
     var_dump(implode("-",$arr));

13、bool is_string();

判断string是否是字符串类型,如果是,返回true

1
2
3
     echo "<br/>--------判断string是否是字符串类型---------<br/>";
     $str = "adsadad";
     var_dump(is_string($str));

14、string strtoupper($string);

把string字符串中的小写字母,全部转成大写

1
2
3
     echo "<br/>--------全部转成大写---------<br/>";
     $str = "adsadad";
     var_dump(strtoupper($str));

15、string strtolower($string);

把string字符串中的大写字母,全部转成小写

1
2
3
     echo "<br/>--------全部转成小写---------<br/>";
     $str = "ASDFGFSFS";
     var_dump(strtolower($str));

16、string ucfirst($string);

把字符串首字母大写

1
2
3
     echo "<br/>--------首字母转成大写---------<br/>";
     $str = "adsadad";
     var_dump(ucfirst($str));

17、string ucwords($string);

把字符串中的单词首字母大写

1
2
3
     echo "<br/>--------单词首字母大写---------<br/>";
     $str = "we are student";
     var_dump(ucwords($str));

18、srting trim($string);

去除字符串首尾的空格

1
2
3
     echo "<br/>--------去除字符串首尾的空格---------<br/>";
     $str = " 23321311ss ";
     var_dump(trim($str));

19、string ltrim($string);

去除字符串左边的空格

1
2
3
     echo "<br/>--------去除字符串左边的空格---------<br/>";
     $str = " 23321311ss ";
     var_dump(ltrim($str));

20、string rtrim($string);

去除字符串右边的空格

1
2
3
     echo "<br/>--------去除字符串左边的空格---------<br/>";
     $str = " 23321311ss ";
     var_dump(rtrim($str));

21、string addslashes($string);

把字符串中特殊字符(单引号,双引号,转义符)进行转义

1
2
3
     echo "<br/>--------字符串转义---------<br/>";
     $str = "a'bc";
     var_dump(addslashes($str));

22、string stripslashes($string);

给字符串string去转义

1
2
3
     echo "<br/>--------字符串去转义---------<br/>";
     $str = "a\'b"c";
     var_dump(stripslashes($str));

23、string htmlspecialchars($string);

把特殊字符(<>)转成实体

1
2
3
     echo "<br/>--------特殊字符转成实体---------<br/>";
     $str = "<a>";
     echo htmlspecialchars($str);

24、string htmlspecialchars_decode($string);

把实体(<>)转成特殊字符

1
2
3
     echo "<br/>--------实体转成特殊字符---------<br/>";
     $str = "&lt;a&gt;";
     var_dump(htmlspecialchars_decode($str));

25、string str_shuffle($string);

将字符串里面的字符打乱,重新组成一个随机字符串

1
2
3
     echo "<br/>--------打乱字符顺序---------<br/>";
     $str = "abcdf";
     var_dump(str_shuffle($str));

26、string str_shuffle($string,$n);

重复字符串n次

1
2
3
4
     echo "<br/>--------重复字符串---------<br/>";
     $str = "abcdf";
     $str = str_repeat($str,3);
     var_dump($str);

27、string substr_count($string,$find);

统计某个字符在字符串出现的次数

1
2
3
     echo "<br/>--------某个字符在字符串中出现个数---------<br/>";
     $str = "dadadads";
     var_dump(substr_count($str,"d"));

文件(目录)操作函数

mode 说明
‘r’ 只读方式打开,将文件指针指向文件头。
‘r+’ 读写方式打开,将文件指针指向文件头。
‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+’ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+’ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘x’ 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
‘x+’ 创建并以读写方式打开,其他的行为和 ‘x’ 一样。
‘c’ 只打开文件。如果文件不存在,则创建。如果它存在,它既没有被截断(也不是’瓦’),也没有调用这个函数失败(如’ * ‘)。文件指针位于文件开头的位置。这可能是有用的如果是希望得到一个咨询锁(见flock())在试图修改文件,使用“W”可以截断文件之前得到锁(如果需要ftruncate()截断,即可使用请求的锁)。
‘c+’ 打开文件以进行读写;否则,它与“C++”有相同的行为。

1、fopen($file,$mode);

打开文件file,如果成功返回resouce(文件句柄,文件指针),失败返回false

$file:要打开的文件

$mode:打开方式,r、r+、w、w+、a、a+常用不带+号

用r、r+打开的时候,如果没有要打开的文件报警告错误

用w、w+、a、a+打开,如果没有文件会创建文件

1
2
3
     echo "----------打开文件----------<br/>";
     $res = fopen("text.txt","r");
     var_dump($res);

2、fwrite($resource,$content);

写入时,$resource是fopen打开文件后的句柄

写入成功,返回写入内容字节数

写入失败,返回false

1
2
3
4
     echo "<br/>----------写入文件一----------<br/>";
     $content = "电555432432423423aasad";
     $res_1 = fwrite($res,$content);
     var_dump($res_1);

3、fread($resource,$length);

从光标位置读取文件,lenght为读取的字节数

打开方式的不同,会造成文件当前指针的不同,fread是从当前指针位置向后读取

每次读取,会改变文件指针的位置

如果有\r\n文件的换行,我们用
替代换行

1
2
3
4
5
6
7
8
9
     echo "<br/>----------读文件----------<br/>";
     $res_2 = fread($res,10);
     var_dump($res_2);
     echo "<br/>----------每次读取文件,会改变文件指针的位置----------<br/>";
     $res_3 = fread($res,50);
     var_dump($res_3);
     echo "<br/>----------指针到文件的最后返回空字符串----------<br/>";
     $res_4 = fread($res,10);
     var_dump($res_4);
1
2
3
4
5
6
7
8
     echo "<br/>----------读取大文件中所有的内容一----------<br/>";
     $file = "text_2.txt";
     $ressource = fopen($file,r);
     $str = "";
     while($res = fread($ressource,10)){
         $str.=$res;
     }
     echo $str;

4、feof($resource);

如果文件指针在文件内容末尾或超出,返回ture,否则返回false

1
2
3
4
5
6
7
8
9
     echo "<br/>---------如果字符串中存在0-----------<br/>";
     $file2 = "text_2.txt";
     $resource2 = fopen($file2,r);
     $str = "";
     while(!feof($resource2)){
         $res2 = fread($resource2,1);
         $str.=$res2;
     }
     echo $str;

5、fclose($resource);

释放fopen打开的资源

1
2
     echo "<br/>---------释放fopen打开的资源-----------<br/>";
     fclose($resource2);

6、file_get_contents($file);

通过文件路径,读取文件内容,会一次性全部读出返回字符串

1
2
3
     echo "<br/>---------读取大文件中所有的内容二-----------<br/>";
     $content = file_get_contents('text_2.txt');
     echo $content;

7、file_put_contents($file,$contents [,FILE_APPEND]);

将content写入到file中,如果加入FILE_APPEND后,指针会末尾添加文件,不再覆盖

1
2
     echo "<br/>---------写入文件二-----------<br/>";
     file_put_contents("text_3.txt",$content,FILE_APPEND);

8、is_file($path);

判断path是否为文件类型,返回ture

1
2
     echo "<br/>---------判断是否是文件-----------<br/>";
     var_dump(is_file($file2));

9、 unlink($path);

删除文件path,返回ture

1
2
     echo "<br/>---------删除文件-----------<br/>";
     //unlink("2.txt");

10、is_dir($path);

判断是否目录,返回ture

1
2
     echo "<br/>---------判断是否是目录-----------<br/>";
     var_dump(is_dir('../14'));

11、seandir($path);

读取path下面的所有文件和目录。返回数组

1
2
3
4
5
     echo "<br/>---------读取文件和目录-----------<br/>";
     $res = scandir("../");
     var_dump($res);
         echo "<br/>---------排除特定目录如.和..-----------<br/>";
         $scanned_directory=array_diff($res,array('..','.'));

12、mkdir($path [,$mode,[true]]);

创建目录,成功返回true

1
2
3
     echo "<br/>---------创建目录-----------<br/>";
     //$res = mkdir("1");
     //var_dump($res);

创建多级目录,加true

1
2
3
     echo "<br/>---------创建多层目录-----------<br/>";
     //$res = mkdir("2/3/4",0777,true);
     //var_dump($res);

13、rmdir($path);

删除文件,删除目录,只能删空目录

1
2
3
     echo "<br/>---------删除目录-----------<br/>";
     //$res = rmdir("1");
     //var_dump($res);

14、dirname($path);

返回路径中的目录部分,去掉文件名的

1
2
3
4
     echo "<br/>---------返回当前目录-----------<br/>";
     echo __FILE__;
     $res = dirname("1.php");
     var_dump($res);

文件上传

$_FILES();里面包含了上传图片的所有信息

bool move_uploaded_file ( string $filename , string $destination )

本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。

注意:如果出现本地测试成功,但上传到服务器无法使用,建议检查一下文件夹目录权限是否是777

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传</title>
</head>

<body>
    <form action="1.php" method="post" enctype="multipart/form-data">
        <input type="file" name="myfile"/><br/>
        <input type="submit" value="上传"/>
    </form>
</body>
</html>
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
<?php
     header("Content-type:text/html;charset=utf-8");
     var_dump($_FILES['myfile']);
     
     if(!empty($_FILES['myfile'])){
         //判断文件提交出错
         if($_FILES['myfile']['error']!=0){
             exit("上传出错");
         }
         //判断交的文件类型,是不是符合要求
         $allowType = array('image/jpeg');
         if(!in_array($_FILES['myfile']['type'],$allowType)){
             exit("上传文件类型不符合要求");
         }
         //判断文件大小
         $max = 1000*1020;
         if($_FILES['myfile']['size'] > $max){
              exit("上传文件大小超出");
         }
         //把文件从临时位置移到目标位置
         $ext = explode("/",$_FILES['myfile']['type']);
         echo $ext['1'];
         $fileName = "img/".time().".".$ext['1'];
         move_uploaded_file($_FILES['myfile']['tmp_name'],$fileName);
         echo "文件上传成功";
         echo "<br/>";
         echo "<a href='upland.html'>返回</a>";
     }
?>

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注