Viết một dòng mới vào tệp trong PHP (nguồn cấp dữ liệu dòng)


109

Mã của tôi:

$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);

Vì một số lý do, nó đang viết \ndưới dạng một chuỗi, vì vậy tệp trông giống như sau:

40119\n40122\n40120\n42155\n36925\n45881\n42145\n45880

Từ Google, nó yêu cầu tôi sử dụng \r\n, nhưng \rlà một ký tự xuống dòng, điều này dường như không phải là những gì tôi muốn làm. Tôi chỉ muốn tệp trông như thế này:

40119
40122
40120
42155
36925
45881
42145
45880

Cảm ơn.

Câu trả lời:


278

Thay thế '\n'bằng "\n". Trình tự thoát không được nhận dạng khi bạn sử dụng' .

Xem sách hướng dẫn .

Đối với câu hỏi về cách viết kết thúc dòng, hãy xem lưu ý tại đây . Về cơ bản, các hệ điều hành khác nhau có các quy ước khác nhau cho phần cuối dòng. Windows sử dụng "\ r \ n", hệ điều hành dựa trên unix sử dụng "\ n". Bạn nên tuân theo một quy ước (tôi đã chọn "\ n") và mở tệp của bạn ở chế độ nhị phân ( fopennên lấy "wb", không phải "w").


Tôi đã thay đổi "\ r \ n" thành "\ n" cho dòng kết thúc của tôi vì nó hoạt động. Cảm ơn.
csonuryilmaz

bây giờ mã của tôi sử dụng cả hai "'nó làm phiền tôi
Mr PizzaGuy

Trên thực tế, bạn thực sự có thể nhận thấy rằng \ n được đánh dấu khi sử dụng "" nhưng không được đánh dấu khi sử dụng ''. (Đây là, nếu trình soạn thảo của bạn sử dụng tô sáng cú pháp, thì của tôi là Sublime Text 3)
DarkVeneno

68

Sử dụng PHP_EOLđầu ra nào \r\nhoặc \ntùy thuộc vào hệ điều hành.


4
Đừng gặp rắc rối, hãy luôn sử dụng \ntrừ khi bạn muốn mở tệp trong một hệ điều hành cụ thể - nếu vậy, hãy sử dụng kết hợp dòng mới của hệ điều hành đó, chứ không phải hệ điều hành bạn đang chạy PHP ( PHP_EOL).
Alix Axel

60

PHP_EOL là một hằng số được xác định trước trong PHP kể từ PHP 4.3.10 và PHP 5.0.2. Xem hướng dẫn đăng bài:

Sử dụng điều này sẽ giúp bạn tiết kiệm thêm mã hóa trên các nền tảng phát triển.

I E.

$data = 'some data'.PHP_EOL;
$fp = fopen('somefile', 'a');
fwrite($fp, $data);

Nếu bạn lặp lại điều này hai lần, bạn sẽ thấy trong 'somefile':

some data
some data

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.