11/08/2018, 20:43

Save file trùng tên nhau thì gán thêm số thứ tự kèm theo

Trong PHP, nếu bạn muốn save file trùng tên nhau thì gán thêm số thứ tự kèm theo, ví dụ như test_1.txt thì hãy tham khảo hướng dẫn sau đây. Tuy nhiên, khi ghi file [test.txt] nhiều lần, có thể đã tồn tại [test_1.txt], [test_2.txt]…do đó, ta phải đánh số tăng dần. Để giải quyết vấn đề ...

Trong PHP, nếu bạn muốn save file trùng tên nhau thì gán thêm số thứ tự kèm theo, ví dụ như test_1.txt thì hãy tham khảo hướng dẫn sau đây.

Tuy nhiên, khi ghi file [test.txt] nhiều lần, có thể đã tồn tại [test_1.txt], [test_2.txt]…do đó, ta phải đánh số tăng dần.
Để giải quyết vấn đề này, chúng ta sẽ sử dụng một hàm đệ quy như sau:

$filepath = unique_filename(dirname(__FILE__). '/' . 'test.txt');
file_put_contents($filepath, "sample");
echo $filepath;


function unique_filename($org_path, $num=0){

    if( $num > 0){
        $info = pathinfo($org_path);
        $path = $info['dirname'] . "/" . $info['filename'] . "_" . $num;
        if(isset($info['extension'])) $path .= "." . $info['extension'];
    } else {
        $path = $org_path;
    }

    if(file_exists($path)){
        $num++;
        return unique_filename($org_path, $num);
    } else {
        return $path;
    }
}

Trong ví dụ này, chúng tôi đang cố gắng để lưu một file có tên [test.txt].

Nếu đã tồn tại file có cùng tên gốc của nó, hàm sẽ trả về tên file và số tăng dần kèm theo, chẳng hạn như [test_1.txt], [test_2.txt], [test_3.txt]......

0