الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الكتابة في ملف و طباعة سطر جديد

بدأه مصطفى 36a2 في 25 أكتوبر 2013 · 0 رد · 1,874 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم ورحمة الله وبركاته
ظهرت لي مشكلة بسيطة أحببت مشاركتها هنا ..
لنفترض أننا نقوم بكتابة برنامج يطبع عبارة :

Hello World!Hello World!
أي أن الطباعة في سطرين مختلفين .. ونريد أن يكون الخرج في ملف خارجي ..
هذا كود بسيط جداً (يُفترض أنه يقوم بالمطلوب )
$file_name="36a2.txt";//اسم الملف
$file_handle=fopen($file_name,'w');//فتح الملف للكتابة
//w = write
$content="Hello World!\nHello World!";//النص المطلوب طباعته
echo "<pre>".$content."</pre>";//طباعة النص كما هو الى المتصفح
fwrite($file_handle,$content);//طباعة النص الى الملف
fclose($file_handle);//إغلاق الملف
والآن إليكم السؤال :
على المتصفح تتم طباعة النص كما هو مطلوب .. في سطرين ..
لكن عند فتحه باستخدام محرر ويندوز notepad نجده على سطر واحد ..(باقي المحررات تعتبره سطرين )
يمكنك التفكير في السبب قبل قراءة الجواب أدناه :)

الجواب :
لاحظ أننا استخدمنا \n لطباعة السطر الجديد ..
يّسمّى الرمز \n والذي له القيمة 10 في جدول ASCII بـLine Feed أي تلقيم السطر ..
أما الرمز الآخر \r ذو القيمة 13 في جدول ASCII فيسمّى Carriage Return أي إعادة النقل
يقوم الرمز \r  تاريخيّا بإعادة المؤشر إلى بداية السطر..
أما الرمز \n فيقوم بإنزالنا سطرا للأسفل ..
(السبب التاريخي يرجع إلى تقليد حركة الآلة الكاتبة حيث تنزل سطرا ثم ترجع المؤشر )
المهم .. في محرر notepad يسنتظر ورود \r\n حتى ينزل لسطر جديد ..
أما في المحررات الجديدة .. فلا تهتم سواء كان \r أو \n أو \r\n أو \n\r  فستفهم أن عليها النزول لسطر جديد ..
لذلك عليك الحذر عندما تكتب برنامجاً يقرأ حرفا حرفا .. فقد تكون نهاية السطر أحد الرموز الأربع السابقة ..
(بالمناسبة .. إذا كنت تستخدم notepad++ يمكنك اختبار view->show symbols->show all charachters وسترى كل الرموز الغريبة )
بالتوفيق :)
2

مواضيع مشابهة