哪个函数更适合在PHP中检索文件的基名:basename或pathinfo?

ukl*_*viu 6 php string file

在PHP中获取文件的基本名称(没有扩展名的文件名)的推荐方法是什么?

echo basename('foo.jpg', '.jpg');
// outputs "foo"

echo pathinfo('foo.jpg', PATHINFO_FILENAME);
// outputs "foo"
Run Code Online (Sandbox Code Playgroud)

显然两者都产生相同的输出.使用一个优于另一个有什么好处?

性能方面看起来basename()比1,000,000次迭代更快300毫秒:

<?php

$f = 'foo.jpg';
$n = 1000000;

$start = microtime(true);

for ($i = 0; $i < $n; $i++) {
    basename($f);
}

$stop1 = microtime(true);

for ($i = 0; $i < $n; $i++) {
    pathinfo($f, PATHINFO_FILENAME);
}

$stop2 = microtime(true);

echo "Basename result: " . ($stop1 - $start) . " seconds\n";
echo "Pathinfo result: " . ($stop2 - $stop1) . " seconds\n";
Run Code Online (Sandbox Code Playgroud)

这输出:

Basename result: 1.0358278751373 seconds
Pathinfo result: 1.3277871608734 seconds
Run Code Online (Sandbox Code Playgroud)

除了边际性能提升之外,我还对如何在幕后实现这些功能感兴趣?在这两种情况下,检索基本名称的基础算法是否相似?

rod*_*ipf 4

如果您只需要基本名称,请使用基本名称函数。无论如何,尽量使用消耗较少的操作;当您可以直接在字符串中获取所需内容(使用 basename 函数)时,为什么要创建不需要的信息数组(使用 pathinfo)?