2013-06-07 2 views
0

Я создал PHP-скрипт, который вытягивает расширение «.mov» в скрипт, а затем анализирует данные. Но проблема в том, что у меня есть каталог с кучей файлов .mov, и скрипт вытягивает только последний.Как получить содержимое файла из определенного имени файла в каталоге?

Другими словами, у меня есть каталог с «Keating651.mov» «NickSHC809.mov» «Vill230.mov» и многое другое ... Могу ли я изменить свой код, чтобы он вытащил из каталога и вытащил файл, который соответствует «NickSHC809» ... затем запустить скрипт? И если я изменю его, чтобы вытащить «Keating651» в более позднее время, он только вытащит этот файл?

foreach (glob('*.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>"; 
} 

echo "<div style='text-align:center; margin-top: 20px;'><img src='shclogo.png' 
alt='Logo' width='200' height='133'/></div>"; 

?> 

ответ

0

Не уверен, что я понял вопрос. Вам просто нужен контент этого конкретного файла, а затем вручную изменить файл, чтобы получить? Тогда вы могли бы просто изменить

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

К

$theData = file_get_contents("NickSHC809.mov") or die("Unable to retrieve file data"); 

EDIT

В соответствии с Вашим комментарием, попробуйте

$matchedFiles = array(); 
foreach (glob('*.mov') as $filename){ 
    if (preg_match("/^(NickSHC809|Keating651)/i",$filename)) 
    $matchedFiles[] = $filename; 
} 
$useFile = reset($matchedFiles); // If you know there's just one file, otherwise do something to select the correct one 
$theData = file_get_contents($useFile) or die("Unable to retrieve file data"); 
+0

Я хотел бы иметь скрипт тянуть данных, только если он соответствует правильному префиксу, например «NickSHC809» из каталога, поскольку иногда префикс может иметь дополнительные добавленные слова, такие как «NickSHC809_test» – ValleyDigital

+0

Всегда ли это один файл, и всегда есть .mov? – MaX

+0

ваше редактирование именно то, что я искал. Добавление префикса файла в glob (*. Mov) отлично работает. Спасибо! – ValleyDigital