سؤال

رمز بلدي:

$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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top