كتابة سطر جديد للملف في PHP (خلاصة السطر)
سؤال
رمز بلدي:
$i = 0;
$file = fopen('ids.txt', 'w');
foreach ($gemList as $gem)
{
fwrite($file, $gem->getAttribute('id') . '\n');
$gemIDs[$i] = $gem->getAttribute('id');
$i++;
}
fclose($file);
لسبب ما ، يكتب \n
كسلسلة ، لذلك يبدو الملف هكذا:
40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880
من Google'ing يخبرني بالاستخدام \r\n
, ، لكن \r
هي عودة عربة لا يبدو أنها ما أريد القيام به. أريد فقط أن يبدو الملف هكذا:
40119
40122
40120
42155
36925
45881
42145
45880
شكرًا.
المحلول
يحل محل '\n'
مع "\n"
. لم يتم التعرف على تسلسل الهروب عند استخدامه '
.
انظر كتيب.
للاطلاع على مسألة كيفية كتابة نهايات الخط ، انظر الملاحظة هنا. في الأساس ، أنظمة التشغيل المختلفة لها اتفاقيات مختلفة لنهايات الخط. يستخدم Windows " r n" ، تستخدم أنظمة التشغيل القائمة على UNIX " n". يجب أن تلتزم بمؤتمر واحد (اخترت " n") وفتح ملفك في الوضع الثنائي (fopen
يجب أن تحصل على "WB" ، وليس "W").
نصائح أخرى
يستخدم PHP_EOL
الذي يخرج \r\n
أو \n
اعتمادا على نظام التشغيل.
PHP_EOL هو ثابت محدد مسبقًا في PHP منذ PHP 4.3.10 و PHP 5.0.2. انظر كتيب نشر:
سيوفر لك استخدام هذا الترميز الإضافي على تطورات Cross Platform.
بمعنى آخر.
$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);
إذا قمت بحلق خلال هذا مرتين ، فسترى في "Somefile":
some data
some data
تستطيع ايضا استخذام file_put_contents()
:
file_put_contents('ids.txt', implode("\n", $gemList) . "\n", FILE_APPEND);