Yêu cầu thg 8 7, 2019 9:05 SA 448 0 4
  • 448 0 4
+1

Đọc dòng cuối cùng của file txt trong laravel

Chia sẻ
  • 448 0 4

Chào các bạn, Mình có một file 2019-07-26_insert_user_record_for_csv.txt có nội dung:

cập nhật:01 file、chèn: 02 file
cập nhật:03 file、chèn: 03 file
cập nhật:06 file、chèn: 05 file
cập nhật:11 file、chèn: 21 file

làm sao để đọc được dòng cuối cùng để hiển thị được số 11 và 21. Cảm ơn các bạn,

4 CÂU TRẢ LỜI


Đã trả lời thg 8 7, 2019 9:33 SA
Đã được chấp nhận
0

File nhỏ thì dùng mấy cách của các comment khác OK. Muốn chạy ngon trên file to thì dùng cái này: https://gist.github.com/lorenzos/1711e81a9162320fde20

Dùng fseek về cuối file để tìm kí tự break line và dò lên...

Lấy đc dòng cuối thì dùng regex hay gì tùy ý để bóc ra số 11, 21 kia ( '/(\d+) file.*?(\d+) file /' => lấy matched $1, $2)

Chia sẻ
Avatar Tran Anh @mediavn
thg 8 7, 2019 9:48 SA

Mình sẽ tìm hiểu cách này của bạn, Thanks bạn'

Đã trả lời thg 8 7, 2019 9:26 SA
+1
<?php

$file = file('2019-07-26_insert_user_record_for_csv.txt', FILE_IGNORE_NEW_LINES);

$data = end($file);
$listElements = explode(' ', $data);
// var_dump($listElements);

echo $listElements[2];
echo "\n";
echo $listElements[4];

bài cũng chỉ là 1 bài dạng cơ bản như sau: lấy nội dung file => nhét mảng mỗi dòng => lấy phần tử cuối => string convert sang mảng explode kí tự space. Lấy phần tử 2 và 4 là xong. Minh khuyên bạn học 1 số sách về cấu trúc dữ liệu và giải thuật và lập trình hướng cấu trúc, tự làm mấy bài toán sắp xếp, cắt chuỗi, danh sách liên kết đôi, đơn, cây dữ liệu,..... thì sau này mấy câu hỏi dạng này cũng muỗi và easy thôi.

Chia sẻ
Avatar Tran Anh @mediavn
thg 8 7, 2019 9:43 SA

cảm ơn bạn nhé,

Đã trả lời thg 8 7, 2019 9:28 SA
+1
<?php
$file = "2019-07-26_insert_user_record_for_csv.txt";
$data = file($file);
$line = $data[count($data)-1];

preg_match_all("/\d+/",$line, $matches);

print_r($matches);
Chia sẻ
Avatar WheeBoo @quanghung97
thg 8 7, 2019 9:36 SA

master PHP đây rồi (capcuu)

Avatar Tran Anh @mediavn
thg 8 7, 2019 9:47 SA

Cảm ơn bạn nhiều,

Đã trả lời thg 8 7, 2019 9:31 SA
+1

Để lấy dòng cuối cùng bạn đọc file đó như sau:

    $contents= File::get(storage_path('test.txt'));
    $lines = explode("\n", $contents);

Dòng cuối cùng của file sẽ là: $lines[count($lines) - 1]

Chia sẻ
Avatar Tran Anh @mediavn
thg 8 7, 2019 9:48 SA

Cảm ơn bạn nhiều,

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí