我有一个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>";
}
答案 0 :(得分: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为$ info):)