- 了解 PHP 處理一般文字檔案的概念與方法
PHP 處理檔案概念
- 權限認知
- PHP 引擎需要有對應的系統權限,才可以對系統本身的檔案目錄進行存取!
- PHP 如果是在 web server 上運作,其使用的權限就只是運作 web server 使用者的權限!
- PHP 可否讀寫系統的檔案,視系統付予 PHP 使用者多大的可用權限!
- 讀檔
- 範例: readfile.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{titlename}</title>
</head>
<body bgcolor="{color}">
<h1>Hello, {name}</h1>
</body>
</html> - 範例:readfile.php
<?php $page = file_get_contents('readfile.html'); $page = str_replace('{titlename}', 'Welcome', $page); if (date('H') >= 12)){ $page = str_replace('{color}','blue',$page); } else { $page = str_replace('{color}','red',$page); } $page = str_replace('{name}', 'Kitty', $page); print $page; ?>
- 範例: readfile.html
- 寫檔
- writefile.php
<?php $page = file_get_content('readfile.html'); $page = str_replace('{titlename}','HelloWorld',$page); if (date('H' >= 12)) { $page = str_replace('{color}','blue',$page); } else { $page = str_replace('{color}','green',$page); } $page = str_replace('{name}',$_SESSION['name'],$page); file_put_contents('writefile.html', $page); ?>
- writefile.php
- 讀寫部份檔案:
- 使用 file() 函數,一行一行讀取需要的內容!
- 範例:email.txt
apple@example.com|apple mac os microsoft@example.com|bill gates aws@example.com|bruce fu
- reademail.php
<?php foreach (file('email.txt') as $line){ $line = trim($line); $info = explode('|', $line); print '<li><a href="mailto:' . $info[0] . '">' . $info[1] ."</a></li>\n'; } ?>
- 使用 fopen()函數:一次只讀取一行,節省記憶體空間的浪費!
- freademail.php
<?php $fh = fopen('email.txt'),'rb'); while ((! feof($fh)) && ($line = fgets($fh))){ $line = trim($line); $info = explode('|', $line); print '<li><a href="mailto:' . $info[0] . '">' . $info[1] ."</a></li>\n'; } fclose($fh); ?>
- 使用 fwrite() 函數,將資料寫回檔案內!
- fwritemail.php
<?php $fh = fopen('email.txt'),'wb'); fwrite($fh,"james@example.com|lebron james\n"); fclose($fh); ?>