PHP基础语法之文本的读取与写入

最简单的文件列表读取

通过glob函数可以通过通配符获取文件列表,虽然大多数时候使用读取目录的形式,不过该方式依旧是最简单的。

<?php
/* 最简单的文件列表读取 */

header("Content-Type: text/plain; charset=utf-8");
$list = glob("*");  //该函数可以通过通配符获取文件列表
echo "\$list类型为:".gettype($list)."\n";//gettype获取变量类型
print_r($list);

$file_count = 0;
$dir_count = 0;
foreach($list as $value){
    if(is_file($value)){        //使用is_file判断字符串是否是一个文件
        echo "第\t".++$file_count."\t个文件:\t$value\n";
    }
    if(is_dir($value)){ //使用is_dir判断是否是一个文件夹
        echo "第\t".++$dir_count."\t个目录:\t$value\n";
    }
}
?>

读取一个文件内容并输出

读取文件很简单,这里使用了一个hr函数,输出n个短横线,同时可以使用str_repeat替代

<?php
/* 文件内容的读取 */

//首先提示,我们只读取我们当前已经写过的代码内容,内容为utf-8编码,并且以纯文本形式输出
header("Content-Type: text/plain; charset=utf-8");

echo "脚本名为:".$_SERVER['SCRIPT_NAME']."\n";
$filename = basename($_SERVER['SCRIPT_NAME']);  //可以通过$_SERVER['SCRIPT_NAME']获取当前页面的PHP文件执行路径,那么basename就可以将其中的文件名提取出来
echo "提取到的默认文件名为:$filename\n";
if(!empty($_GET['name'])){
    //首先判断是否有通过GET参数提交一个名为name的参数
    //empty()函数能够事先检查变量是否存在,可以也就是可以省略isset()判断
    $filename = $_GET['name'];
    echo "\$_GET参数提交的文件名为:$filename\n";
}
if(!is_file($filename)){//文件不存在,程序结束
    die($filename."=>不是一个有效的文件\n");
}
hr();//可以看到此时输出了10个短横岗
$content = file_get_contents($filename);    //此时获取文件内容,仅仅使用函数file_get_content
echo "文件名:$filename, 内容长度:".strlen($content),"\n";

hr(70); //输出70个长度分割线
echo $content;  //输出原始文件内容
echo "\n";//输出一个换行,避免$content不是以换行结尾,导致分割线与内容出现在同一行
hr(70);

function hr($nu=10){
    //输出一个水平线,这里使用一个默认值,$nu=10,说明该参数可以省略,也可以保留,省略时为$nu值为10,否则值被覆盖
    for($i =0; $i<$nu; $i++)echo "-";
    echo "\n";
}
?>

文件的写入,同样通过表单的形式

<?php
/* 文件的创建与写入 */
header("Content-Type: text/html; charset=utf-8");
?>
<html>
<head>
    <title>创建文件</title>
</head>
<body>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
    echo "<p style="color:blue;">",write_file($_POST["filename"],$_POST["content"]),"</p>";//调用自定义函数进行文件写入,可输出错误
}
?>
    <h3>文件创建操作</h3>
    <form action="" method="post">
        <p><label>文件名:<input name="filename" type="text" value="<?php
        if(isset($_POST["filename"]))echo $_POST["filename"];//判断是否
?>" /></label></p>
        <p>文件内容:</p>
        <textarea name="content" rows="10" cols="50"></textarea><!--rows表示默认显示10行,cols表示默认显示50列-->
        <p></p><button type="submit">写入文件</button></p>
    </form>
</body>
</html>
<?php
function write_file($file_name,$content){
    //自定文件写入函数
    $directory = "file/write";//写入前提条件,该相对目录一定要存在
    if(!is_dir($directory))return "写入文件夹不存在";//进行文件夹目录存在判断,如果不存在手动创建
    if(file_exists($directory."/".$file_name)) return "目标文件或路径已经存在,当前操作无法覆盖,取消该判定即可覆盖文件";

    $count = file_put_contents($directory."/".$file_name,$content);//关键性语句,file_put_content默认必须要两个参数,路径和数据,出错时返回false,否则返回整型数字,表示写入的内容

    if($content === false)return "文件写入失败";//进行全等判断,因为如果只是进行等值判断会出现0也相等
    return "写入$count 个字节到$directory/$file_name";
}
?>

2条评论在“PHP基础语法之文本的读取与写入”

写下你最简单的想法