首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實用函數庫大全:檔案操作、分頁、上傳與常用工具

     編輯:PHP 綜合知識

一、檔案讀寫核心函數

1. 讀取整個檔案內容

function PHP_Read($file_name) {
    $fd = fopen($file_name, 'r');
    $buf = '';
    while ($bufline = fgets($fd, 4096)) {
        $buf .= $bufline;
    }
    fclose($fd);
    return $buf;
}

現代替代:PHP 5.4+ 可直接用 file_get_contents($file_name),更簡潔高效。

2. 寫入檔案(支援鎖定防併發)

function PHP_Write($file_name, $data, $method = 'w') {
    $fp = @fopen($file_name, $method);
    if (!$fp) return false;
    flock($fp, LOCK_EX);
    $bytes = fwrite($fp, $data);
    fclose($fp);
    return $bytes;
}

3. 靜態頁面生成封裝

function phptohtm($source, $target, $isFile = true) {
    $data = $isFile ? PHP_Read($source) : $source;
    return PHP_Write($target, $data);
}

二、資料庫輔助函數(舊式 mysql_* 範例,僅供參考)

注意:mysql_* 函數已棄用(PHP 7.0 移除),實務請改用 PDO 或 mysqli。

function rec_exist($table, $where) {
    $sql = "SELECT COUNT(*) AS num FROM {$table} {$where}";
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    return $row['num'] > 0 ? $row['num'] : false;
}

三、目錄遞迴刪除

function del_DIR($dir) {
    $handle = opendir($dir);
    while (($file = readdir($handle)) !== false) {
        if ($file === '.' || $file === '..') continue;
        $path = "{$dir}/{$file}";
        is_dir($path) ? del_DIR($path) : unlink($path);
    }
    closedir($handle);
    rmdir($dir);
}

四、目錄名稱合法性檢測(僅允許英數、底線、連字號、點)

function isen($str) {
    for ($i = 0, $len = strlen($str); $i < $len; $i++) {
        $c = ord($str[$i]);
        if (($c < 48 && $c !== 45 && $c !== 46) ||
            ($c > 57 && $c < 65) ||
            ($c > 90 && $c < 97 && $c !== 95) ||
            $c > 122) {
            return false; // 含非法字元
        }
    }
    return true;
}

五、分頁類別(完整版)

支援:總筆數自動查詢、頁碼範圍顯示、上一頁/下一頁、首尾頁、URL 參數 Base64 雙重編碼傳遞。

function splitlist($HALT, $LRLIST, $ECHOCNT, &$paper, $table, $where, $page_id, $userid) {
    global $splitstr, $sumcnt;
    // ... 完整邏輯見原始碼,核心回傳帶 LIMIT 的 $where 字串
}

使用說明:呼叫前需設定 $paper、$sumcnt、$enwhere;執行後輸出 echo $splitstr; 顯示頁碼列。

六、圖片上傳處理

function upload_img($tmpName, $fileName, $fileSize, $uploadPath, $maxSizeKB = 64) {
    if ($fileSize > $maxSizeKB * 1024) die('檔案過大');
    $dest = $uploadPath . $fileName;
    if (file_exists($dest)) die('檔案已存在');
    if (!move_uploaded_file($tmpName, $dest)) die('上傳失敗');
    return $fileName . ' (' . round($fileSize/1024,1) . ' KB)';
}

七、實用小技巧集錦

需求代碼片段
驗證 IP 格式!strcmp(long2ip(sprintf('%u', ip2long($ip))), $ip)
Email 正則驗證preg_match('/^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,}$/i', $email)
檢測 IP 與網段($ip & $mask) == $network(皆用 ip2long 轉換)
檔案下載標頭header('Content-Type: application/x-download'); header('Content-Disposition: attachment; filename="'.$name.'");
FTP 斷點續傳導向header('Location: ftp://user:pass@host/file');
中文正則匹配preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str)(需 u 修飾符)
批量轉換超連結見原始碼 urlParse(),使用 preg_replace_callback 更安全

現代化建議

  • 檔案操作改用 SplFileObject 或 file_get_contents()/file_put_contents()。
  • 資料庫層統一採用 PDO 預處理語句,防止 SQL 注入。
  • 上傳類建議整合 finfo_file() 偵測真實 MIME,避免副檔名偽裝。
  • 分頁邏輯可封裝為獨立類別,支援多種資料來源(陣列、PDOStatement、Eloquent 等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved