0Pricing
PHP Academy · บทเรียน

การอ่านไฟล์ด้วย PHP

อ่านเนื้อหาไฟล์โดยใช้ file_get_contents และ fopen/fread

การอ่านไฟล์ด้วย PHP เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

PHP และระบบไฟล์

PHP สามารถอ่าน เขียน และจัดการไฟล์บนระบบไฟล์ของเซิร์ฟเวอร์ได้ ฟังก์ชันสำคัญสำหรับการอ่านมีดังนี้:

  • file_get_contents() — อ่านไฟล์ทั้งหมดเป็นสตริง
  • fopen() + fread() — การอ่านแบบสตรีม
  • file() — อ่านไฟล์เป็นอาร์เรย์ของบรรทัด

file_get_contents()

วิธีที่ง่ายที่สุดในการอ่านเนื้อหาทั้งหมดของไฟล์ลงในสตริง:

<?php
$content = file_get_contents('/var/www/html/data.txt');

if ($content === false) {
    echo 'Could not read file';
} else {
    echo $content;
    echo strlen($content) . ' bytes';
}

การตรวจสอบว่ามีไฟล์อยู่หรือไม่

ตรวจสอบก่อนอ่านเสมอเพื่อหลีกเลี่ยงข้อผิดพลาด:

<?php
$path = '/var/data/config.json';

if (!file_exists($path)) {
    die('Config file not found');
}

if (!is_readable($path)) {
    die('No permission to read file');
}

$json = file_get_contents($path);
$config = json_decode($json, true);

file() — อ่านลงอาร์เรย์

file() จะอ่านไฟล์และส่งคืนแต่ละบรรทัดเป็นสมาชิกของอาร์เรย์:

<?php
$lines = file('data.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($lines as $lineNum => $line) {
    echo ($lineNum + 1) . ': ' . $line . PHP_EOL;
}

fopen, fread, fclose

การอ่านแบบสตรีมระดับต่ำสำหรับไฟล์ขนาดใหญ่ — ประมวลผลโดยไม่โหลดทุกอย่างไว้ในหน่วยความจำ:

<?php
$handle = fopen('large_file.txt', 'r');

if ($handle === false) die('Cannot open file');

// Read 1KB at a time
while (!feof($handle)) {
    $chunk = fread($handle, 1024);
    echo $chunk;
}

fclose($handle);

fgets สำหรับการอ่านทีละบรรทัด

fgets() จะอ่านทีละบรรทัด จึงใช้หน่วยความจำอย่างมีประสิทธิภาพสำหรับไฟล์ขนาดใหญ่:

<?php
$handle = fopen('server.log', 'r');

while (($line = fgets($handle)) !== false) {
    if (str_contains($line, 'ERROR')) {
        echo 'Found error: ' . $line;
    }
}

fclose($handle);

การอ่านไฟล์ระยะไกล

file_get_contents() ยังสามารถอ่านจาก URL ของ HTTP ได้ หากเปิดใช้งาน allow_url_fopen:

<?php
$json = file_get_contents('https://api.example.com/data.json');

// Prefer cURL for more control and error handling
$ch = curl_init('https://api.example.com/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status   = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

SplFileObject

SplFileObject มีอินเทอร์เฟซแบบ OO สำหรับการดำเนินการกับไฟล์:

<?php
$file = new SplFileObject('data.txt', 'r');

foreach ($file as $lineNum => $line) {
    echo $lineNum . ': ' . $line;
}

// Read specific line:
$file->seek(5);
echo $file->current(); // line 6 (0-indexed)

การอ่านไฟล์ JSON

รูปแบบที่ใช้กันทั่วไป: อ่านและถอดรหัสไฟล์การกำหนดค่า JSON:

<?php
function loadJsonConfig(string $path): array {
    if (!file_exists($path)) {
        throw new RuntimeException("Config not found: $path");
    }
    $json = file_get_contents($path);
    $data = json_decode($json, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        throw new RuntimeException('Invalid JSON: ' . json_last_error_msg());
    }
    return $data;
}

$cfg = loadJsonConfig('/app/config.json');

ข้อมูลไฟล์

รับข้อมูลเมตาของไฟล์โดยไม่ต้องอ่านเนื้อหา:

<?php
$path = '/var/www/html/image.jpg';

echo filesize($path);           // bytes
echo filetype($path);           // 'file'
echo filemtime($path);          // last modified timestamp
echo date('Y-m-d', filemtime($path));

$info = pathinfo($path);
echo $info['dirname'];    // /var/www/html
echo $info['basename'];   // image.jpg
echo $info['extension'];  // jpg

การล็อกไฟล์

ใช้การล็อกไฟล์เพื่อป้องกันความขัดแย้งจากการเขียนพร้อมกัน:

<?php
$handle = fopen('counter.txt', 'r+');

if (flock($handle, LOCK_EX)) {  // exclusive lock
    $count = (int) fread($handle, 20);
    $count++;
    fseek($handle, 0);
    fwrite($handle, $count);
    fflush($handle);
    flock($handle, LOCK_UN);    // release
}

fclose($handle);

ตรวจสอบอย่างรวดเร็ว

ฟังก์ชัน PHP ใดอ่านไฟล์ทั้งหมดลงในสตริงได้ด้วยการเรียกใช้เพียงครั้งเดียว

สรุป: การอ่านไฟล์

พื้นฐานสำคัญของการอ่านไฟล์:

  • file_get_contents() — อ่านไฟล์ทั้งหมดเป็นสตริง
  • file() — อ่านไฟล์เป็นอาร์เรย์ของบรรทัด
  • fopen/fread/fclose — ใช้สตรีมสำหรับไฟล์ขนาดใหญ่
  • fgets() — อ่านแบบสตรีมทีละบรรทัด
  • ตรวจสอบ file_exists และ is_readable ก่อนเสมอ
  • ใช้ flock เพื่อความปลอดภัยในการเข้าถึงพร้อมกัน

คำถามที่พบบ่อย

บทเรียน “การอ่านไฟล์ด้วย PHP” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การอ่านไฟล์ด้วย PHP” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านไฟล์ด้วย PHP”

อ่านเนื้อหาไฟล์โดยใช้ file_get_contents และ fopen/fread คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การอ่านไฟล์ด้วย PHP” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ด้วย PHP
  2. การเขียนและต่อท้ายไฟล์
  3. การทำงานกับไดเรกทอรี
  4. การจัดการการอัปโหลดไฟล์
← กลับไปที่ PHP Academy