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ướng dẫn php basename without extension - tên cơ sở php không có phần mở rộng

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

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

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

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

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

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

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

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

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

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

Đã 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

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

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

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

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

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

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

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

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

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

Đã 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

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