2016-09-21 17 views
0

さて、私は物事を把握して、この質問を数回書き直しました。だから、私はディレクトリimagesを持っています。これには、date_filenumberYYYYMMDD_1234)の形式に従った66個のサブディレクトリが含まれており、イメージと、それ以外のサブディレクトリは含まれていません。私はちょうど66を取得し、それらのうちの1つをランダムに選択し、その画像へのパスをHTMLに挿入したいと考えています。私はほとんどそこにいる:特定のサブディレクトリの名前から無作為に選択してください(名前指定パターンでフィルタリングされています)

PHP 
$A = glob('images/????????_????'); 
$B = array_rand($A); 
$path = ($A[$B]).'/1x.jpg' 

HTML 
<img src="<?php echo $path;?>"> 

しかし、それは私に<img src="images/YYYYMMDD_1234/1x.jpg"を与える。私はちょうど<img src="YYYYMMDD_1234/1x.jpg">がほしいと思う。

これは私が立ち往生した場所です。アイデア?

答えて

0

使用​​3210とsubstr()GLOB_ONLYDIRを使用してディレクトリの

$foldersArray = array(); 
foreach(glob('images/*') as $folder) { 

    if (strpos($folder, "includes") !== 0) { 
     if (strpos($folder, ".") === false) $foldersArray[] = $folder; //exclude files 
    } 

} 
2

​​3210(場合には、そこにファイルかもしれません)、その後が含ま除外PREG_GREP_INVERTを使用してpreg_grep()と:

$dirs = preg_grep('/includes/', glob('images/*', GLOB_ONLYDIR), PREG_GREP_INVERT); 

であれば将来、あなたが望まない他のディレクトリを追加してから、yと一致するディレクトリだけを取得してください私たちの命名パターン:

$dirs = preg_grep('/\d{8}_\d{4}$/', glob('images/*', GLOB_ONLYDIR)); 

またはあなたの単純なパターンのために:

$dirs = glob('*_*', GLOB_ONLYDIR); 
+0

glob' 'に私をオンにしていただきありがとうございます。ところで、 'preg_grep'は必要ではないことが判明しました。 'glob( 'images/* _ *')'という名前のパターンを使って同じ配列を得ることができます。しかし、それは私に必要なデータ形式を取得していないことが判明したので、私はあなたがそれ以上の提案をしていれば完全に問題を書き直しました。 –

関連する問題