这些名称是自由格式,但都具有相同的元素,如“名称”、“年份”、“编解码器”、“质量”、“分辨率”等......因此您可以创建元素列表并过滤它们出去。
目标是获得最大可读的电影名称
我从来没有在 php 上写过东西,所以我首先在 Perl 上创建了脚本,然后尽我所能将其翻译成 php……所以请原谅我一些毛茸茸的 php 代码
$arr = array(
'The.Walking.Dead.S04E01.HDTV.x264-ASAP',
'R.I.P.D.2013.HDRip.x264.AC3-FooKas',
'the.perks.of.being.a.wallflower.2012.1080p.bluray.x264-sparks'
);
foreach($arr as $value) {
$words = preg_split('/[.]/', $value);
$words = array_filter($words, create_function('$var','return !(preg_match("/(?:HDTV|bluray|\w{2,3}rip)|(?:x264)|(?:\d{4})|(?:\d{3,4}p)|(?:AC\d)/i", $var));'));
echo join(' ', $words);
echo "\n";
}
输出将是:
The Walking Dead S04E01
R I P D
the perks of being a wallflower
这已经足够接近了......如果我的代码有问题是 Perl 的代码,我确定它可以工作:
my @data = (
'The.Walking.Dead.S04E01.HDTV.x264-ASAP',
'R.I.P.D.2013.HDRip.x264.AC3-FooKas',
'the.perks.of.being.a.wallflower.2012.1080p.bluray.x264-sparks'
);
for my $el ( @data ) {
my @words = grep
{!/(?:HDTV|bluray|\w{2,3}rip)|(?:x264)|(?:\d{4})|(?:\d{3,4}p)|(?:AC\d)/i}
split /[.]/, $el;
print join ' ', @words, "\n";
}