Php lấy tên tệp đã tải lên mà không cần phần mở rộng

Nếu bạn có một tên tệp mà bạn cần xóa phần mở rộng bằng PHP, thì có một số cách để thực hiện việc đó. Đây là ba cách, với một số điểm chuẩn

Sử dụng thông tin đường dẫn

Hàm pathinfo() trả về một mảng chứa tên thư mục, tên cơ sở, phần mở rộng và tên tệp. Ngoài ra, bạn có thể chuyển cho nó một trong các hằng số PATHINFO_ và chỉ cần trả về phần đó của tên tệp đầy đủ

$filename = 'filename.html';
$without_extension = pathinfo($filename, PATHINFO_FILENAME);

Nếu tên tệp chứa đường dẫn đầy đủ, thì chỉ tên tệp không có phần mở rộng được trả về

Sử dụng tên cơ sở

Nếu phần mở rộng được biết và giống nhau đối với tất cả các tên tệp, bạn có thể chuyển tham số tùy chọn thứ hai cho tên cơ sở () để yêu cầu nó loại bỏ phần mở rộng đó khỏi tên tệp

$filename = 'filename.html';
$without_extension = basename($filename, '.html');

Nếu tên tệp chứa đường dẫn đầy đủ, thì chỉ tên tệp không có phần mở rộng được trả về

Sử dụng chất nền và strrpos

$filename = 'filename.html';
$without_extension = substr($filename, 0, strrpos($filename, "."));

Nếu tên tệp chứa đường dẫn đầy đủ, thì đường dẫn đầy đủ và tên tệp không có phần mở rộng sẽ được trả về. Bạn cũng có thể đặt tên cơ sở() để thoát khỏi đường dẫn nếu cần (e. g. tên cơ sở(chất nền($tên tệp, 0, strrpos($tên tệp, ". ")))) mặc dù nó chậm hơn so với sử dụng pathinfo

điểm chuẩn

Chạy từng cái này trong một vòng lặp 10.000.000 lần trên máy Mac của tôi với PHP 5. 4

thông tin đường dẫn. 10. 13 giây
tên cơ sở. 7. 87 giây
substr/strpos. 6. 05 giây
tên cơ sở(substr/strrpos). 11. 98 giây

Nếu tên tệp không chứa đường dẫn đầy đủ hoặc nếu có thì tùy chọn substr/strrpos có vẻ là nhanh nhất

Nếu tên tệp chứa đường dẫn và bạn không muốn đường dẫn nhưng biết phần mở rộng bạn muốn xóa là gì, thì tên cơ sở có vẻ là nhanh nhất

Nếu tên tệp chứa đường dẫn, bạn không muốn đường dẫn và bạn không biết phần mở rộng là gì, thì hãy sử dụng tùy chọn pathinfo()

Phần kết luận

Sẽ có nhiều cách khác để thực hiện việc này và một số cách có thể nhanh hơn. Trong nhiều trường hợp, tốc độ có lẽ không thực sự quan trọng lắm (rốt cuộc thì 10 giây để chạy pathinfo là 10 triệu lần);

html
3 được sử dụng để lấy phần mở rộng của tệp nếu có nhiều hơn một phần mở rộng với đường dẫn đã cho thì nó sẽ chỉ trả về phần mở rộng cuối cùng

html
4 được sử dụng để lấy tên tệp không có phần mở rộng. Trong phương thức tên cơ sở, hậu tố tham số thứ hai chỉ định phần mở rộng là tùy chọn nhưng nếu bạn chỉ cần lấy tên tệp thì bạn sẽ phải chuyển phần mở rộng làm đối số thứ hai trong phương thức này

html
5

html
6

html
7

html
8

html
9

html
0

html
1

html
2

Trong bài viết này, chúng ta sẽ xem cách trích xuất phần mở rộng tên tệp trong PHP, cùng với việc hiểu cách triển khai chúng thông qua các ví dụ. Có một số cách khác nhau để trích xuất phần mở rộng từ tên tệp bằng PHP, được đưa ra bên dưới

Sử dụng hàm pathinfo(). Hàm này trả về thông tin về một tệp. Nếu tham số tùy chọn thứ hai bị bỏ qua, một mảng kết hợp chứa dirname, basename, extension và tên tệp sẽ được trả về. Nếu tham số thứ hai là đúng, nó sẽ trả về dữ liệu cụ thể

Thí dụ. Ví dụ này mô tả việc sử dụng hàm pathinfo() trả về thông tin về một đường dẫn bằng cách sử dụng một mảng kết hợp hoặc một chuỗi.  

PHP




html
3

html
4
html
5
html
6
html
7
html
0

html
4
html
2
html
6
html
4
html
5
html
5
html
7

html
4
html
9
html
2
html
0

html
2

Đầu ra

html

Sử dụng hàm end(). Nó làm bùng nổ biến tệp và lấy phần tử mảng cuối cùng làm phần mở rộng tệp. Hàm end() trong PHP dùng để lấy phần tử cuối cùng của mảng

Thí dụ. Ví dụ này mô tả cách sử dụng hàm end() dùng để tìm phần tử cuối cùng của mảng đã cho

PHP




html
3

html
4
html
5
html
6
html
7
html
0

html
4
html
0
html
6
html
2
html
5
html
4
html
5
html
5
html
7

html
4
html
2
html
6
html
1
html
5
html
0
html
7

html
4
html
9
html
2
html
0

html
2

Đầu ra

html

Sử dụng các hàm substr() và strrchr()

  • chất nền(). Một phần của chuỗi được trả về
  • strchr(). Lần xuất hiện cuối cùng của một chuỗi bên trong một chuỗi khác được xác định

Thí dụ. Ví dụ này sử dụng cả hàm substr()  và hàm strchr().  

PHP




html
3

html
4
html
5
html
6
html
7
html
0

html
4
html
2
html
6
html
39
html
5
html
41
html
5
html
5
html
5
html
4
html
46

html
4
html
9
html
2
html
0

html
2

Đầu ra

html

Sử dụng hàm strrpos(). Chức năng này được sử dụng để tìm vị trí xuất hiện cuối cùng của một ‘. ’ trong tên tệp và tăng vị trí tệp lên 1 để phát nổ chuỗi (. )

Thí dụ. Ví dụ này mô tả cách sử dụng hàm strrpos() để tìm vị trí xuất hiện cuối cùng của một chuỗi trong một chuỗi khác.  

PHP




html
3

html
4
html
5
html
6
html
7
html
0

html
4
html
2
html
6
html
39
html
5
html
5
html
5
html
65
html
5
html
5
html
5
html
4
html
70

html
4
html
9
html
2
html
0

html
2

Đầu ra

html

Sử dụng hàm preg_replace(). Sử dụng các biểu thức chính quy như thay thế và tìm kiếm. Tham số đầu tiên của hàm này là mẫu tìm kiếm, tham số thứ hai $1 là tham chiếu đến bất kỳ thứ gì khớp với tham số đầu tiên (. *) và tham số thứ ba là tên tệp

Ví dụ. Ví dụ này sử dụng hàm preg_replace() để thực hiện một biểu thức chính quy để tìm kiếm và thay thế nội dung

Làm cách nào để lấy tên tệp không có phần mở rộng trong PHP?

Bạn có thể sử dụng các hàm substr() và strrpos() để truy xuất tên tệp không có phần mở rộng trong PHP. $filename = 'tên tệp. php'; . "));

Làm cách nào để lấy loại tệp đã tải lên trong PHP?

Tạo biểu mẫu HTML .
<. LOẠI TÀI LIỆU html>
Chọn hình ảnh để tải lên
.
.

Làm cách nào để lấy tên và phần mở rộng của tệp đã tải lên trong PHP?

Trong PHP, chúng ta có thể truy cập tên thật của tệp mà chúng ta đang tải lên bằng từ khóa $_FILES[“file”][“name”].

Làm cách nào để lấy tên tệp không có phần mở rộng trong laravel?

Phương thức hashName chính xác là cái mà Laravel gọi trong phương thức store. $request->image->hashName(); Bạn sẽ nhận được cùng một tên mà Laravel tạo khi nó tạo tên tệp trong phương thức lưu trữ. $path = $request->image->getClientOriginalName();