0

私は画像が配置され、次のように名前が付けられている広告サイトを持っています:

images/139/16_2_139.jpg

どこ: -

  • images/139/ユーザーフォルダです
  • 16広告のIDです
  • 2この広告で利用できる画像の数です
  • 139ユーザーIDです

images/1390/3800_12_1390.jpg
images/27/728_7_27.jpg
images/8563/13281_2_8563.jpg

次に、この広告に関するすべての画像をスライドショー(カラーボックス)に表示する必要があります

SQLから広告IDとユーザーIDを抽出します

phpが広告IDとユーザーIDに関するすべての画像をディレクトリで読み取り、カラーボックススライドショー(jQueryアドオン)に表示する必要があります。広告IDは1から15000になり、ユーザーIDは1から9000になります。

より良い正規表現またはpreg_matchが私の問題を解決できるかどうかわかりません

ご協力いただきありがとうございます

4

2 に答える 2

0

これを試して

$str='images/1390/3800_12_1390.jpg

images/27/728_7_27.jpg

images/8563/13281_2_8563.jpg';

preg_match_all('#images/([0-9]+)/([0-9]+)_([0-9]+)_([0-9]+)#is',$str,$res);

$r=array();unset($res[0]);
foreach($res as $k=>$v){
    foreach($v as $k2=>$v2){
        $r[$k2][$k]=$v2;
    }



}

print_r($r);
于 2013-01-16T12:09:12.877 に答える
0

私は自分自身が参考のために共有する解決策を見つけました:

function microtime_float()
{
   list($usec, $sec) = explode(' ', microtime());

   return ((float)$usec + (float)$sec);
}
ini_set ("display_errors", "1");
error_reporting(E_ALL);
$start = microtime_float();
$b = '<br />';  $ad = 16;   $cust = 139;
$directory = $_SERVER['DOCUMENT_ROOT'].'/ginew/advertiser/images/'. $cust .'/';
// echo $directory;
if( is_dir( $directory ) ) {
$handler = opendir( $directory );
    $images = glob("$directory{*.jpg,*.JPG,*jpeg, *JPEG}", GLOB_BRACE);
    $cnt = count($images);
echo 'total images in directory: '. $cnt.$b;

$i=0;   $img1 = '';
while ($filename = readdir($handler)) {
    if($filename != '.' && $filename != '..') {
        $base = basename($filename, ".jpg"); // echo $base.$b;
        $ext = substr(strrchr($filename, '.'), 0); // echo $ext.$b;
        $imgsize = @filesize($directory.$filename); $imgsize =     ($imgsize/1000000) .' mb';
if ( preg_match( '#'.$ad.'_([0-9]+)_'.$cust.'#', $base, $matches ) ) { 
$i++;
 $img = $i .' matches '. $matches[0] . $ext; 
$img1.= $i .' matches '. $matches[1] .'<br>'; 

 echo $img.$b;
        } // END is_dir
          echo $i .' --> '. $filename . $ext .' => '. $imgsize .'<br />';
    } // END preg_match
} // END if filename
$end = microtime_float();
} // END while
echo '/ -------------------------- /<br>';
echo $img1.$b;
echo 'matches images found: '. $i . $b;
echo 'preg_match brauch : '.($end-$start).' Sekonnen';

出力:
ディレクトリ内の画像の総数:
61は16_2_139.jpgに
一致2は16_7_139.jpgに一致
3は16_1_139.jpgに一致
/-------------------------- /
1一致22一致
73
一致1

matches images found: 3
preg_match brauch : 0.00037693977355957 Sekonnen

誰かがこれに対するより良い解決策を持っているなら、みんなに感謝して投稿してください;-)

于 2013-01-17T03:35:51.463 に答える