-
PHP使用unlink函數進行文件刪除。
unlink($filename);
刪除文件夾使用rmdir函數,文件夾必須為空,如果不為空或者沒有權限則會提示失敗。
rmdir($dir);
如果文件夾中存在文件,可以先循環刪除目錄中的所有文件,然后再刪除該目錄,循環刪除可以使用glob函數遍歷所有文件。
foreach (glob("*") as $filename) {
? unlink($filename);
}查看全部 -
PHP寫文件也具有兩種方式,最簡單的方式是采用file_put_contents。
$filename = './test.txt';
$data = 'test';//文件內容
file_put_contents($filename, $data);查看全部 -
filesize函數可以取得文件的大小,文件大小是以字節數表示的。
$filename = '/data/webroot/usercode/resource/test.txt';
$size = filesize($filename);如果要轉換文件大小的單位,可以自己定義函數來實現。
function getsize($size, $format = 'kb') {
? ?$p = 0;
? ?if ($format == 'kb') {
? ? ? ?$p = 1;
? ?} elseif ($format == 'mb') {
? ? ? ?$p = 2;
? ?} elseif ($format == 'gb') {
? ? ? ?$p = 3;
? ?}
? ?$size /= pow(1024, $p);
? ?return number_format($size, 3);
}$filename = '/data/webroot/usercode/code/resource/test.txt';$size = filesize($filename);$size = getsize($size, 'kb'); //進行單位轉換echo $size.'kb';查看全部 -
文件有很多元屬性,包括:文件的所有者、創建時間、修改時間、最后的訪問時間等。
fileowner:獲得文件的所有者filectime:獲取文件的創建時間filemtime:獲取文件的修改時間fileatime:獲取文件的訪問時間
其中最常用的是文件的修改時間,通過文件的修改時間,可以判斷文件的時效性,經常用在靜態文件或者緩存數據的更新。
$mtime = filemtime($filename);
echo '修改時間:'.filemtime($filename);查看全部 -
$filename = './test.txt';
if (file_exists($filename)) {
? ?echo file_get_contents($filename);
}如果只是判斷文件存在,使用file_exists就行,file_exists不僅可以判斷文件是否存在,同時也可以判斷目錄是否存在,從函數名可以看出,is_file是確切的判斷給定的路徑是否是一個文件。
$filename = './test.txt';
if (is_file($filename)) {
? ?echo file_get_contents($filename);
}使用is_readable與is_writeable在文件是否存在的基礎上,判斷文件是否可讀與可寫。
$filename = './test.txt';
if (is_writeable($filename)) {
? ?file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
? ?echo file_get_contents($filename);
}查看全部 -
讀取文件的函數為file_get_contents,可以將整個文件全部讀取到一個字符串中。
$content = file_get_contents('./test.txt');
file_get_contents也可以通過參數控制讀取內容的開始點以及長度。
$content = file_get_contents('./test.txt', null, null, 100, 500);
PHP也提供類似于C語言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以從文件指針中讀取一行,freads可以讀取指定長度的字符串。
$fp = fopen('./text.txt', 'rb');
while(!feof($fp)) {
? ?echo fgets($fp); //讀取一行
}
fclose($fp);?
$fp = fopen('./text.txt', 'rb');
$contents = '';
while(!feof($fp)) {
? ?$contents .= fread($fp, 4096); //一次讀取4096個字符
}
fclose($fp);使用fopen打開的文件,最好使用fclose關閉文件指針,以避免文件句柄被占用。
編寫代碼讀取$filename的文件內容。
$content = file_get_contents($filename);
echo $content;查看全部 -
PHP的unset函數,刪除后就會從全局變量$_SESSION中去除,無法訪問。
session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提示name不存在如果要刪除所有的session,可以使用session_destroy函數銷毀當前session,session_destroy會刪除所有數據,但是session_id仍然存在。
session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
session_destroy();查看全部 -
session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);session會自動的對要設置的值進行encode與decode,因此session可以支持任意數據類型,包括數據與對象等。
session_start();
$_SESSION['ary'] = array('name' => 'jobs');
$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);設置一個session,使name的值為jobs:
session_start();
$_SESSION['name'] = 'jobs';
查看全部 -
<?php
//開始使用session
session_start();
//設置一個session
$_SESSION['test'] = time();
//顯示當前的session_id
echo "session_id:".session_id();
echo "<br>";
//讀取session值
echo $_SESSION['test'];
//銷毀一個session
unset($_SESSION['test']);
echo "<br>";
var_dump($_SESSION);
查看全部 -
設置了有效路徑的時候,不在當前路徑的時候則看不到當前cookie。
setcookie('test', '1',0, '/path'); ?
var_dump($_COOKIE['test']); ?查看全部 -
PHP中刪除cookie也是采用setcookie函數來實現。
setcookie('test', '', time()-1);
查看全部 -
setcookie具有7個可選參數,我們常用到的為前5個:
name(?Cookie名)可以通過$_COOKIE['name'] 進行訪問
value(Cookie的值)
expire(過期時間)Unix時間戳格式,默認為0,表示瀏覽器關閉即失效
path(有效路徑)如果路徑設置為'/',則整個網站都有效
domain(有效域)默認整個域名都有效,如果設置了'www.xianlaiwan.cn',則只在www子域中有效$value = 'test';
setcookie("TestCookie", $value);//名字是'TestCookie',值為value
setcookie("TestCookie", $value, time()+3600); ?//有效期一小時
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //設置路徑與域PHP中還有一個設置Cookie的函數setrawcookie,setrawcookie跟setcookie基本一樣,唯一的不同就是value值不會自動的進行urlencode,因此在需要的時候要手動的進行urlencode。
setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
因為Cookie是通過HTTP標頭進行設置的,所以也可以直接使用header方法進行設置。
header("Set-Cookie:cookie_name=value");
查看全部 -
正則匹配常用在表單驗證上
<?php
$user = array(
? ? 'name' => 'spark1985',
? ? 'email' => '[email protected]',
? ? 'mobile' => '13312345678'
);
//進行一般性驗證
if (empty($user)) {
? ? die('用戶信息不能為空');
}
if (strlen($user['name']) < 6) {
? ? die('用戶名長度最少為6位');
}
//用戶名必須為字母、數字與下劃線
if (!preg_match('/^\w+$/i', $user['name'])) {
? ? die('用戶名不合法');
}
//驗證郵箱格式是否正確
if (!preg_match('/^[\w\.]+@\w+\.\w+$/i', $user['email'])) {
? ? die('郵箱不合法');
}
//手機號必須為11位數字,且為1開頭
if (!preg_match('/^1\d{10}$/i', $user['mobile'])) {
? ? die('手機號不合法');
}
echo '用戶信息驗證成功';
查看全部 -
調整字符串的日期格式:
$string = 'April 15, 2014';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '$3, ${1} $2';
echo preg_replace($pattern, $replacement, $string); //結果為:2014, April 15其中${1}與$1的寫法是等效的,表示第一個匹配的字串,$2代表第二個匹配的。
將目標字符串$str中的文件名替換后增加em標簽,例如index.php要替換成<em>index.php</em>。
$str = '主要有以下幾個文件:index.php, style.css, common.js';
$p = '/\w+\.\w+/i';
$str = preg_replace($p, '<em>$0</em>', $str);
echo $str;//$0匹配所有字串查看全部 -
preg_match只能匹配一次結果,但很多時候我們需要匹配所有的結果,preg_match_all可以循環獲取一個列表的匹配結果數組。
$p = "|<[^>]+>(.*?)</[^>]+>|i";
$str = "<b>example: </b><div align=left>this is a test</div>";
preg_match_all($p, $str, $matches);
print_r($matches);可以使用preg_match_all匹配一個表格中的數據:
$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";
$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";
preg_match_all($p, $str, $matches);
print_r($matches);使用preg_match_all匹配所有li標簽中的數據。
$p = "/<li>(.*)<\/li>/i";
preg_match_all($p, $str, $matches);
print_r($matches[1]);//解釋下這個正則://后面的i表示不區分大小寫,<li>(.*?)<\/li>表示li標簽內的匹配的()內的值有多少,括號內的.表示所有單字符,*表示數量為0個或者多個。也就是li標簽內有字符就顯示出來
查看全部
舉報