我正在尝试制作一个php / html5声音播放器: 1.扫描名为“声音”的文件夹中的文件,并仅选择mp3文件 2.在每个页面加载时,播放“声音”文件夹中的随机声音。
到目前为止它工作得很好,除了有时源的路径不是.mp3而是“/ sound /”,有时候“/..”
你有什么建议吗?我有办法只扫描mp3,而不是dirs或其他扩展吗?
非常感谢您的回复..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$dir = 'sound/';
$scan = scandir($dir);
$size = sizeof($scan);
$random = rand(1, $size);
$randomFile = $scan[$random];
$fileLocation = $dir. $randomFile;
$explode = explode(".", $randomFile);
$extension = $explode[1];
?>
<title>Test</title>
</head>
<body>
<?php echo $fileLocation; ?>
<audio autoplay>
<source src="<?php echo $fileLocation; ?>" type="audio/<?php echo $extension; ?>"></source>
</audio>
</body>
</html>
答案 0 :(得分:1)
扫描目录时,PHP会扫描..
和.
。在扫描linux中的目录时,您必须跳过扫描的..
和.
个文件。试试这段代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$dir = 'sound/';
$scan = scandir($dir);
$size = sizeof($scan);
regen:
$random = rand(1, $size);
$randomFile = $scan[$random];
if( $randomFile == 'sound/..' || $randomFile == 'sound/.' )
goto regen;
$fileLocation = $dir. $randomFile;
$explode = explode(".", $randomFile);
$extension = end($explode);
?>
<title>Test</title>
</head>
<body>
<?php echo $fileLocation; ?>
<audio autoplay>
<source src="<?php echo $fileLocation; ?>" type="audio/<?php echo $extension; ?>"></source>
</audio>
</body>
</html>
或仅允许mp3
个扩展名,如下所示:
$dir = 'sound/';
$scan = scandir($dir);
$size = sizeof($scan);
regen:
$random = rand(1, $size);
$randomFile = $scan[$random];
$fileLocation = $dir. $randomFile;
$explode = explode(".", $randomFile);
$extension = end($explode);
if( $extension != 'mp3' ) goto regen;
答案 1 :(得分:1)
scandir
根据文档扫描文件和目录。
$dir = 'sound/';
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$x = pathinfo($filename);
if( $x['extension'] == 'mp3' )
$files[] = $filename;
}
然后你可以从你的文件数组中选择。