从文件名中减去文件扩展名

时间:2013-07-08 16:46:20

标签: php

我使用PHP获取随机的.ogg文件,然后将其播放给用户。我想向用户显示文件名,但也会显示(.ogg)扩展名。

<?php
$sounds = array("Blah - Artist.ogg", "Blah1 - Artist2.ogg");
$rand_sound = array_rand($sounds);
?>

这是歌曲名称输出:

<p class="text"> Now playing: <?php echo $sounds[$rand_sound]; ?> </p>

如何才能显示文件名?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

我也相信你也可以这样做:

pathinfo($sounds[$rand_sound],PATHINFO_FILENAME);

答案 1 :(得分:1)

尝试:

<?php echo basename($sounds[$rand_sound], '.ogg'); ?>

可能会更快:

<?php echo substr($sounds[$rand_sound], 0, -4); ?>

或者:

<?php echo str_replace('.ogg', '', $sounds[$rand_sound]); ?>

或者每个分机:

<?php echo substr($sounds[$rand_sound], 0, strrpos($sounds[$rand_sound], '.')); ?>

类似但如果文件没有扩展名也可以使用:

<?php echo substr($sounds[$rand_sound], 0, strrpos($sounds[$rand_sound], '.') ? : strlen($sounds[$rand_sound])); ?>

也许是最好的解决方案(适用于所有情况):

<?php echo str_replace(strrchr($sounds[$rand_sound], '.'), '', $sounds[$rand_sound]); ?>

编辑:

上述功能是一项测试,因为找到新的做事方式很有趣。但我建议使用PHP的本机函数pathinfobasename。因此,如果您知道扩展程序采用basename的第一个解决方案,则采用以下方法之一。

PHP&gt; = 5.2

<?php echo pathinfo($sounds[$rand_sound], PATHINFO_FILENAME); ?>

PHP&lt; 5.2

<?php
echo basename(
    $sounds[$rand_sound],
    '.'.pathinfo($sounds[$rand_sound], PATHINFO_EXTENSION)
);
?>

答案 2 :(得分:0)

<?php echo preg_replace("/\.[^\.]*$/", "", $sounds[$rand_sound]); ?>