การอ่านไฟล์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านไฟล์ด้วย PHP
- การเขียนและต่อท้ายไฟล์
- การทำงานกับไดเรกทอรี
- การจัดการการอัปโหลดไฟล์