0

我有一个带回电影标题和收视率的 php 脚本。它还对数据进行排序,以便带有“xxx”的电影标题显示在底部。如果有人不想在屏幕上看到它们,有没有办法完全忽略“XXX”标题,所以它们根本不显示?我仍然希望它与 XXX 标题一起排序,但是如果有人不想要它,我可以即时包含一些代码,这对我来说是最有效的。对此的任何帮助表示赞赏。

foreach (glob('mov/Alene*.mov') as $filename){ 
    $theData = file_get_contents($filename) or die("Unable to retrieve file data");
}

$string = $theData;
$titles = explode("\n", $string);

function getInfo($string){
    $Ratings = ['G', 'PG', 'PG-13', 'R', 'NR', 'XXX'];
    $split = preg_split("/\"(.+)\"/", $string, 0, PREG_SPLIT_DELIM_CAPTURE); 
    if(count($split) == 3){ 
        preg_match("/(".implode("|", $Ratings).")\s/", $split[0], $matches);
        $rating = $matches[0];
        return ["title" => $split[1], "rating" => $rating];
    }
    return false;
}


$infolist = array();
foreach($titles as $title){
    $info = getInfo($title);
    if($info !== false){
    $infolist[] = $info;
    }
}

usort($infolist, "infosort");

function infosort($lhs,$rhs) {
  return strcmp($lhs['rating'], $rhs['rating']);
}

foreach ($infolist as $info) {
        echo "<div style ='margin-bottom: 3px; text-align: center;
          font:13px Verdana,tahoma,sans-serif;color:green;'> 
           {$info["title"]} : {$info["rating"]}</div>";
}
4

1 回答 1

1

像这样...

foreach ($infolist as $info) {
     if($info["rating"]!=="XXX"){
        echo "<div style ='margin-bottom: 3px; text-align: center;
          font:13px Verdana,tahoma,sans-serif;color:green;'> 
           {$info["title"]} : {$info["rating"]}</div>";}
}

或者更好....从源头上做,那么你的数组甚至不包括 XXX 电影。

 function getInfo($string){
    $Ratings = ['G', 'PG', 'PG-13', 'R', 'NR', 'XXX'];
    $split = preg_split("/\"(.+)\"/", $string, 0, PREG_SPLIT_DELIM_CAPTURE); 
    if(count($split) == 3){ 
        preg_match("/(".implode("|", $Ratings).")\s/", $split[0], $matches);
        $rating = $matches[0];
        if($rating!=='XXX'){
        return ["title" => $split[1], "rating" => $rating];}
    }
    return false;
}

然后你就像平常一样离开 foreach($infolist as $info) :)

于 2013-06-08T00:34:45.063 回答