Hướng dẫn php basename without extension - tên cơ sở php không có phần mở rộng

Tôi có mã PHP này:

function ShowFileExtension($filepath) { preg_match('/[^?]*/', $filepath, $matches); $string = $matches[0]; $pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); if(count($pattern) > 1) { $filenamepart = $pattern[count($pattern)-1][0]; preg_match('/[^?]*/', $filenamepart, $matches); return strtolower($matches[0]); } }

Nếu tôi có một tệp có tên /www/htdocs index.html html index 1, chức năng này sẽ trả về /www/htdocs index.html html index 2.

Tôi muốn làm ngược lại, tôi muốn chức năng trả về /www/htdocs index.html html index 3 mà không cần mở rộng.

Tệp chỉ là một chuỗi trong một biến.

hỏi ngày 2 tháng 2 năm 2010 lúc 11:10Feb 2, 2010 at 11:10

Mostafa Elkadymostafa ElkadyMostafa Elkady

5.54910 Huy hiệu vàng43 Huy hiệu bạc68 Huy hiệu Đồng10 gold badges43 silver badges68 bronze badges

1

Không cần tất cả những điều đó. Kiểm tra pathinfo (), nó cung cấp cho bạn tất cả các thành phần của đường dẫn của bạn.pathinfo(), it gives you all the components of your path.

Ví dụ từ hướng dẫn:

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0

Đầu ra của mã:

/www/htdocs index.html html index

Và thay vào đó, bạn chỉ có thể nhận được một số phần như:

echo pathinfo('/www/htdocs/index.html', PATHINFO_EXTENSION); // outputs html

Công nghệ Séc

14.7k10 Huy hiệu vàng60 Huy hiệu bạc87 Huy hiệu đồng10 gold badges60 silver badges87 bronze badges

Đã trả lời ngày 2 tháng 2 năm 2010 lúc 11:13Feb 2, 2010 at 11:13

7

Thay thế cho /www/htdocs index.html html index 4, bạn có thể sử dụng

  • /www/htdocs index.html html index 5 - Trả về thành phần tên tệp của đường dẫn

Ví dụ từ hướng dẫn sử dụng PHP

$path = "/home/httpd/html/index.php"; $file = basename($path); // $file is set to "index.php" $file = basename($path, ".php"); // $file is set to "index"

Bạn phải biết phần mở rộng để loại bỏ nó trước.

Tuy nhiên, vì câu hỏi của bạn cho thấy bạn có nhu cầu nhận tiện ích mở rộng và tên cơ bản, tôi sẽ bỏ phiếu cho câu trả lời của Pekka là câu hỏi hữu ích nhất, bởi vì nó sẽ cung cấp cho bạn bất kỳ thông tin nào bạn muốn về đường dẫn và tệp với một bản địa hàm số.

Đã trả lời ngày 2 tháng 2 năm 2010 lúc 11:13Feb 2, 2010 at 11:13

Thay thế cho /www/htdocs index.html html index 4, bạn có thể sử dụngGordon

/www/htdocs index.html html index 5 - Trả về thành phần tên tệp của đường dẫn72 gold badges528 silver badges553 bronze badges

2

Ví dụ từ hướng dẫn sử dụng PHPSep 26, 2013 at 23:20

Bạn phải biết phần mở rộng để loại bỏ nó trước.yckart

Tuy nhiên, vì câu hỏi của bạn cho thấy bạn có nhu cầu nhận tiện ích mở rộng và tên cơ bản, tôi sẽ bỏ phiếu cho câu trả lời của Pekka là câu hỏi hữu ích nhất, bởi vì nó sẽ cung cấp cho bạn bất kỳ thông tin nào bạn muốn về đường dẫn và tệp với một bản địa hàm số.9 gold badges119 silver badges129 bronze badges

6

Gordongordon

$fileName = basename($filePath); $fileNameNoExtension = preg_replace("/\.[^.]+$/", "", $fileName);

309K72 Huy hiệu vàng528 Huy hiệu bạc553 Huy hiệu Đồng

Đã trả lời ngày 26 tháng 9 năm 2013 lúc 23:20Mar 21, 2014 at 2:13

caiosm1005caiosm1005caiosm1005

Yckartyckart1 gold badge19 silver badges31 bronze badges

7

31.1k9 Huy hiệu vàng119 Huy hiệu bạc129 Huy hiệu đồng

pathinfo('D:/dir1/dir2/fname', PATHINFO_FILENAME); // return "fname" pathinfo('D:/dir1/dir2/fname.php', PATHINFO_FILENAME); // return "fname" pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_FILENAME); // return "fname" pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_DIRNAME) . '/' . pathinfo('D:/dir1/dir2/fname.jpg', PATHINFO_FILENAME); // return "D:/dir1/dir2/fname"

Một cách tiếp cận khác là bằng cách sử dụng các biểu thức thường xuyên.

Điều này loại bỏ từ giai đoạn cuối /www/htdocs index.html html index 6 cho đến khi kết thúc chuỗi.

Tuy nhiên, vì câu hỏi của bạn cho thấy bạn có nhu cầu nhận tiện ích mở rộng và tên cơ bản, tôi sẽ bỏ phiếu cho câu trả lời của Pekka là câu hỏi hữu ích nhất, bởi vì nó sẽ cung cấp cho bạn bất kỳ thông tin nào bạn muốn về đường dẫn và tệp với một bản địa hàm số.9 gold badges119 silver badges129 bronze badges

GordongordonJun 4, 2015 at 13:18

309K72 Huy hiệu vàng528 Huy hiệu bạc553 Huy hiệu Đồnganydasa

Đã trả lời ngày 26 tháng 9 năm 2013 lúc 23:201 gold badge15 silver badges13 bronze badges

3

Yckartyckart

31.1k9 Huy hiệu vàng119 Huy hiệu bạc129 Huy hiệu đồng

<?php echo pathinfo('logo.png')['filename']; ?>

Một cách tiếp cận khác là bằng cách sử dụng các biểu thức thường xuyên.

logo

Điều này loại bỏ từ giai đoạn cuối /www/htdocs index.html html index 6 cho đến khi kết thúc chuỗi.

Đã trả lời ngày 21 tháng 3 năm 2014 lúc 2:13Feb 10, 2018 at 19:12

1

1.6511 Huy hiệu vàng19 Huy hiệu bạc31 Huy hiệu đồng

Nếu phần mở rộng không được biết, hãy sử dụng giải pháp nàyget the current executed file name without extension

echo pathinfo(basename($_SERVER['SCRIPT_NAME']), PATHINFO_FILENAME);

Chức năng pathinfo của php man

yckart

Đã trả lời ngày 4 tháng 6 năm 2015 lúc 13:18Jan 27, 2017 at 12:56

AnydasaanydasaRohan Khude

2.5861 Huy hiệu vàng15 Huy hiệu bạc13 Huy hiệu đồng5 gold badges47 silver badges43 bronze badges

Không cần phải viết nhiều mã. Ngay cả nó có thể được thực hiện chỉ bằng một dòng mã. Xem ở đây

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 0

Dưới đây là mã một dòng chỉ trả về tên tệp và xóa tên mở rộng:Feb 2, 2010 at 11:25

Nó sẽ infire

Nguồn: Xóa tiện ích mở rộng và chỉ trả về tên tệp trong PHP17 gold badges77 silver badges110 bronze badges

2

Đã trả lời ngày 10 tháng 2 năm 2018 lúc 19:12

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 1

Hầu như tất cả các giải pháp trên đều hiển thị nhận tên tệp từ đường dẫn $May 2, 2013 at 12:15

Snippet bên dưới sẽ nhận được tên tệp được thực thi hiện tại mà không cần tiện ích mở rộngNSINE

Giải trình1 bronze badge

$ _Server ['script_name'] chứa đường dẫn của tập lệnh hiện tại.

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 2

Đã trả lời ngày 27 tháng 1 năm 2017 lúc 12:56Jul 26, 2015 at 21:37

1

Rohan Khuderohan Khude

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 3

4.1765 Huy hiệu vàng47 Huy hiệu bạc43 Huy hiệu đồng

@Gordon Basename sẽ hoạt động tốt nếu bạn biết tiện ích mở rộng, nếu bạn không thể sử dụng Explode:Oct 6, 2015 at 11:59

2

Đã trả lời ngày 2 tháng 2 năm 2010 lúc 11:25

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 4

hỏa hoạnDec 28, 2015 at 12:35

21.1K17 Huy hiệu vàng77 Huy hiệu bạc110 Huy hiệu đồngmariovials

@fire trong trường hợp tệp FileName sử dụng các dấu chấm, bạn có thể nhận được đầu ra sai. Tôi sẽ sử dụng phương thức @gordon nhưng cũng nhận được tiện ích mở rộng, vì vậy hàm basename hoạt động với tất cả các phần mở rộng, như thế này:10 silver badges12 bronze badges

2

Đã trả lời ngày 2 tháng 5 năm 2013 lúc 12:15

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 5

NsinensineAug 5, 2018 at 15:21

Huy hiệu 491 ĐồngDan Bray

Trong trường hợp của tôi, tôi sử dụng dưới đây. Tôi không quan tâm đến sự mở rộng của nó là gì. : D Tôi nghĩ nó sẽ giúp bạn3 gold badges50 silver badges66 bronze badges

Đã trả lời ngày 26 tháng 7 năm 2015 lúc 21:37

/www/htdocs index.html html index 7

Bạn có thể viết cái nàyAug 27, 2014 at 7:37

user2047861user2047861user2047861

Chúng sẽ trả về phần tử hiện tại của mảng, nếu không được sử dụng trước đó.1 silver badge10 bronze badges

1

Đã trả lời ngày 6 tháng 10 năm 2015 lúc 11:59

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 6

Ngắn

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 7

Đã trả lời ngày 28 tháng 12 năm 2015 lúc 12:35Jun 25, 2015 at 17:53

MariovialmariovialsGhanshyam Gohel

75510 Huy hiệu bạc12 Huy hiệu đồng1 gold badge17 silver badges27 bronze badges

Các giải pháp hiện tại không thành công khi có nhiều phần cho một phần mở rộng. Chức năng bên dưới hoạt động cho nhiều phần, một đường dẫn đầy đủ hoặc chỉ là một tên tệp:

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 8

Đã trả lời ngày 5 tháng 8 năm 2018 lúc 15:21May 21, 2016 at 13:35

shaz3eshaz3eshaz3e

Dan Braydan Bray2 silver badges14 bronze badges

6.8303 Huy hiệu vàng 50 Huy hiệu bạc66 Huy hiệu Đồng

$path_parts = pathinfo('/www/htdocs/index.html'); echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // filename is only since PHP 5.2.0 9

Tên tệp không có phần mở rộng tệp khi bạn không biết tiện ích mở rộng đó:Mar 27, 2015 at 15:20

Đã trả lời ngày 27 tháng 8 năm 2014 lúc 7:37

/www/htdocs index.html html index 0

Huy hiệu bạc 1151Sep 10 at 13:22

Chủ đề