PHP 在 .m3u 文件中验证 file_exists
PHP validate file_exists in .m3u file
我有一个 .m3u 文件,我正在尝试验证每一行以验证路径上的 file_exists
。
这是一行:
/home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3
我的代码看起来是正确的,但脚本无法正常工作,因为我已验证文件是否存在。我已经用谷歌搜索、胡言乱语、“堆叠”和敲击,但我一无所获,无法找到解决方案。
提前谢谢你教我...
$Jarvis = new JarvisAPI(); // my api helper class
$m3uFile = $Jarvis->loadMainList();
array_shift( $m3uFile ); // lose the first line
echo $Jarvis->getCount( $m3uFile ) . ' songs in list.<br/>';
foreach( $m3uFile as $idx => $filenamepath )
{
if(file_exists($filenamepath)){
echo "Exists - ";
}else{
echo "Not found - ";
}
echo $filenamepath;
echo "<br/>";
}
示例结果:
1116 songs in list.
Not found - /home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3
Not found - /home/scott/Music/Bob Marley - The Very Best Of Bob Marley & The Wailers(2001)/Bob Marley & The Wailers - Get Up, Stand Up.mp3
Not found - /home/scott/Music/CAKE/Unknown Album/Sheep Go To Heaven.mp3
当我尝试对路径进行硬编码时,它确实有效:
$sample = '/home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3';
if (file_exists($sample) ) echo filesize($sample);
输出:11736600
基于 Windows 系统,mp3
文件位于 C 驱动器,并使用以下 m3u
播放列表文件内容作为 playlist.m3u
#EXTM3U
#EXTINF:261,Lou Reed & Metallica - Brandenburg Gate
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Brandenburg Gate.mp3
#EXTINF:320,Lou Reed & Metallica - The View
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - The View.mp3
#EXTINF:444,Lou Reed & Metallica - Pumping Blood
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Pumping Blood.mp3
#EXTINF:412,Lou Reed & Metallica - Mistress Dread
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Mistress Dread.mp3
#EXTINF:277,Lou Reed & Metallica - Iced Honey
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Iced Honey.mp3
#EXTINF:686,Lou Reed & Metallica - Cheat On Me
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Cheat On Me.mp3
<?php
$root='c:';
$file=__DIR__ . '/playlist.m3u';
$lines=file( $file );
for( $i=2; $i < count( $lines ); $i+=2 ){
$line=$lines[ $i ];
$path=trim( $root . $line );
printf( '<div>%s</div>', file_exists( $path ) ? sprintf('The file "%s" does exist!!!',basename($path)) : sprintf('Bogus - the file "%s" cannot be found',basename($path)) );
}
?>
这生成了以下内容:
没有在 $path
变量上使用 trim
这失败了所以你也许应该尝试从你的 $filenamepath
变量中删除尾随空格?!
我有一个 .m3u 文件,我正在尝试验证每一行以验证路径上的 file_exists
。
这是一行:
/home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3
我的代码看起来是正确的,但脚本无法正常工作,因为我已验证文件是否存在。我已经用谷歌搜索、胡言乱语、“堆叠”和敲击,但我一无所获,无法找到解决方案。
提前谢谢你教我...
$Jarvis = new JarvisAPI(); // my api helper class
$m3uFile = $Jarvis->loadMainList();
array_shift( $m3uFile ); // lose the first line
echo $Jarvis->getCount( $m3uFile ) . ' songs in list.<br/>';
foreach( $m3uFile as $idx => $filenamepath )
{
if(file_exists($filenamepath)){
echo "Exists - ";
}else{
echo "Not found - ";
}
echo $filenamepath;
echo "<br/>";
}
示例结果:
1116 songs in list.
Not found - /home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3
Not found - /home/scott/Music/Bob Marley - The Very Best Of Bob Marley & The Wailers(2001)/Bob Marley & The Wailers - Get Up, Stand Up.mp3
Not found - /home/scott/Music/CAKE/Unknown Album/Sheep Go To Heaven.mp3
当我尝试对路径进行硬编码时,它确实有效:
$sample = '/home/scott/Music/Whitesnake/Whitesnake (30th anniversary edition)/1-01 Still of the Night.mp3';
if (file_exists($sample) ) echo filesize($sample);
输出:11736600
基于 Windows 系统,mp3
文件位于 C 驱动器,并使用以下 m3u
播放列表文件内容作为 playlist.m3u
#EXTM3U
#EXTINF:261,Lou Reed & Metallica - Brandenburg Gate
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Brandenburg Gate.mp3
#EXTINF:320,Lou Reed & Metallica - The View
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - The View.mp3
#EXTINF:444,Lou Reed & Metallica - Pumping Blood
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Pumping Blood.mp3
#EXTINF:412,Lou Reed & Metallica - Mistress Dread
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Mistress Dread.mp3
#EXTINF:277,Lou Reed & Metallica - Iced Honey
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Iced Honey.mp3
#EXTINF:686,Lou Reed & Metallica - Cheat On Me
\data\Archives\Music\Rips\Lou Reed & Metallica - Lulu [Disc 1] - Lou Reed & Metallica - Cheat On Me.mp3
<?php
$root='c:';
$file=__DIR__ . '/playlist.m3u';
$lines=file( $file );
for( $i=2; $i < count( $lines ); $i+=2 ){
$line=$lines[ $i ];
$path=trim( $root . $line );
printf( '<div>%s</div>', file_exists( $path ) ? sprintf('The file "%s" does exist!!!',basename($path)) : sprintf('Bogus - the file "%s" cannot be found',basename($path)) );
}
?>
这生成了以下内容:
没有在 $path
变量上使用 trim
这失败了所以你也许应该尝试从你的 $filenamepath
变量中删除尾随空格?!