قراءة الملفات باستخدام PHP
اقرؤوا محتوى الملفات باستخدام file_get_contents وfopen/fread
قراءة الملفات باستخدام PHP درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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() أيضًا القراءة من عناوين HTTP URL إذا كان 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 واجهة كائنية التوجه لعمليات الملفات:
<?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» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة الملفات باستخدام PHP»؟
اقرؤوا محتوى الملفات باستخدام file_get_contents وfopen/fread تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «قراءة الملفات باستخدام PHP»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الملفات باستخدام PHP
- الكتابة إلى الملفات وإضافة البيانات إليها
- التعامل مع المجلدات
- التعامل مع تحميل الملفات