在 PHP 中获取文件的基本名称(不带扩展名的文件名)的推荐方法是什么?
echo basename('foo.jpg', '.jpg');
// outputs "foo"
echo pathinfo('foo.jpg', PATHINFO_FILENAME);
// outputs "foo"
显然两者都产生相同的输出。使用一个比另一个有什么优势?
在性能方面,它看起来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";
这输出:
Basename result: 1.0358278751373 seconds
Pathinfo result: 1.3277871608734 seconds
除了边际性能提升之外,我还对这些功能如何在幕后实现感兴趣?在这两种情况下检索基本名称的底层算法是否相似?