2016-06-14 4 views
0

私はフォームバッチファイルを開発しなければならなかったこのコードを持っています。それは古いシステムだった。正確なタイトルがない配列を検索する

次のコードは、./wp-content/uploads/webvideos/をスキャンし、MP4拡張子を持つすべてのファイルをリストしています。それは素晴らしい作品ですが、私は結果をフィルタリングする必要があります。

$post_title = html_entity_decode(get_the_title());は、WORDPRESSポストのタイトルです。例えば、この場合には、次のとおりV000-TEST READフィルタはALL

  • V001-TEST READ ALL
  • V000-TEST READの以下のバリエーションをフィルタリングすることができなければならないALL

  • V002-TEST READ ALL
  • V003 -TEST READ ALL
  • V004- TESTのREAD ALL
  • V005- TEST READ ALL
  • V006-TEST READ ALL - いくつかの追加情報
  • V007-TEST READ ALL - 余分な情報のための
  • V008-TEST READ ALL - - 常に存在します。この作業は複雑BLAのBLA ABAK(19283)
  • です
  • V009-TEST READ ALL - 最終バージョン

あなたが見ることができるように、同じまま唯一のものはタイトルです。 テストリードALL

私はどこから始めるべきか分かりません。 PHPは私が歩いていく道ではありませんが、学習しています。 refferenceとして


$path = "./wp-content/uploads/webvideos/"; 
$webdir = site_url()."/wp-content/uploads/webvideos/"; 
$webdirclean = site_url(); 
$post_title = html_entity_decode(get_the_title()); 


$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)); 
$files = array(); 
$notAllowedExtension = array('jpg', 'vtr', 'html', 'htm'); 

foreach($iterator as $file){ 

if(!in_array($file->getExtension(), $notAllowedExtension) && !$file->isDir()) 

$files[filemtime($file->getPathname())] = $file->getPathname(); 
} 

ksort($files); 

// Filter Array based on name, including varation name 

$files = array_filter($files, function($post_title) 
{ 
    return preg_match('#^V\d{3}\s*-\s*$post_title(\s*-\s*[^\s].+)?$#', $post_title); 
}); 

echo '<h2>After filter</h2>'; 
echo implode('<br>', $files); 


//echo "<pre>" . print_r($files, true) . "</pre>"; 


foreach($files as $file => $date){ 
$title=$files[$file]; 

$cleantitle = basename($title, ".mp4"); 

if($i==$autoplay) $file_main = $title; 
$output .= "" . PHP_EOL . 
"<tr> 
<td><a href=\"javascript:loadVideo('$webdirclean$title')\"> $cleantitle (Click Me)</a> 
</td> 
    <td>NA</td>  

    </tr>" 
. PHP_EOL; 
$i++; 
} 

、と私はそれが何か良いであればわからない、ここで私は必要なものをした前に私が作ったバッチコードがあります。

rem Separate file name in parts delimited by "-. " 
rem and use each part to test the element in folder array 
set "name=%file_name%" 
:nextPart 
for /F "tokens=1* delims=-. " %%a in ("%name%") do (
    if not defined folder[%%a] (
     set "name=%%b" 
     goto nextPart 
    ) else (
     set "folder_path=!folder[%%a]!" 
     goto pathFound 
    ) 
) 

rem Search the elements of folder array in the file_name 
for /F "tokens=2,3 delims=[]=" %%a in ('set folder[') do (
    if "!file_name:%%a=!" neq "%file_name%" (
     set "folder_path=%%b" 
     goto pathFound 
    ) 
) 
echo ERROR: Folder path not found 

答えて

2

あなたはタイトルをフィルタリングするための正規表現を使用することができます。

<?php 
$post_titles = 
[ 
    'V001-TEST READ ALL', 
    'V002-TEST READ ALL', 
    'V003 -TEST READ ALL', 
    'V004- TEST READ ALL', 
    'V005- TEST READ ALL', 
    'V006-TEST READ ALL - Some Extra Information', 
    'V007-TEST READ ALL - There will always be a - for extra info', 
    'V008-TEST READ ALL - This work is complex Bla bla ABAK (19283)', 
    'V009-TEST READ ALL - Final Version', 

    // Some faulty titles: 
    'V009-TEST READ NONE', 
    'V 001-TEST READ ALL', 
    'V001-TEST READ ALL - ', 
    'V001- - This work is complex Bla bla ABAK (19283)' 
]; 

echo '<h2>Before filter</h2>'; 
echo implode('<br>', $post_titles); 

$var = 'TEST READ ALL'; // The fixed portion of the string 

$post_titles = array_filter($post_titles, function($post_title) use($var) 
{ 
    return preg_match("#^V\d{3}\s*-\s*$var(\s*-\s*[^\s].+)?$#", $post_title); 
}); 

echo '<h2>After filter</h2>'; 
echo implode('<br>', $post_titles); 
?> 

出力:

<h2>Before filter</h2>V001-TEST READ ALL<br>V002-TEST READ ALL<br>V003 -TEST READ ALL<br>V004- TEST READ ALL<br>V005- TEST READ ALL<br>V006-TEST READ ALL - Some Extra Information<br>V007-TEST READ ALL - There will always be a - for extra info<br>V008-TEST READ ALL - This work is complex Bla bla ABAK (19283)<br>V009-TEST READ ALL - Final Version<br>V009-TEST READ NONE<br>V 001-TEST READ ALL<br>V001-TEST READ ALL - <br>V001- - This work is complex Bla bla ABAK (19283)<h2>After filter</h2>V001-TEST READ ALL<br>V002-TEST READ ALL<br>V003 -TEST READ ALL<br>V004- TEST READ ALL<br>V005- TEST READ ALL<br>V006-TEST READ ALL - Some Extra Information<br>V007-TEST READ ALL - There will always be a - for extra info<br>V008-TEST READ ALL - This work is complex Bla bla ABAK (19283)<br>V009-TEST READ ALL - Final Version

+0

素晴らしい何コードの一部。私は今それをテストしています。 !!!!ありがとう、あなたMidas!私はすべてのバリエーションを試しています。 – Arthor

+0

こんにちは@ミダス、私は自分の知識で最高のコードを取り入れました。過去4時間試してみました。しかし、それが正しいかどうかはわかりません。さらに、 '$ files'はスクリプトの残りの部分が機能するのに必要なファイルの完全なアドレスを持っています。私はそれをどのように統合するかについてはあまりよく分かりません。どんな援助も大歓迎です。ありがとうございました – Arthor

+0

また、サイドノートとして、.mp4と.mp3の拡張が問題を引き起こすかどうかはわかりません。ありがとうございました – Arthor

関連する問題