-1

我使用 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>

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

4

3 回答 3

2

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

pathinfo($sounds[$rand_sound],PATHINFO_FILENAME);
于 2013-07-08T17:00:46.340 回答
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 >= 5.2

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

PHP < 5.2

<?php
echo basename(
    $sounds[$rand_sound],
    '.'.pathinfo($sounds[$rand_sound], PATHINFO_EXTENSION)
);
?>
于 2013-07-08T16:49:26.957 回答
0
<?php echo preg_replace("/\.[^\.]*$/", "", $sounds[$rand_sound]); ?>
于 2013-07-08T16:50:09.757 回答