2013-07-08 36 views
-1

我想收集一個電影和電視資源網站,資源列表中有四個可選的下拉框過濾器,試圖使用PHP模擬用戶,遍歷所有的過濾,並生成鏈接在每個過濾器的情況下。PHP多個數組的組合創建網址

生成的鏈接至少有一種過濾器,每個過濾器只能使用一次,最多有四個過濾器,過濾器在鏈接中不會相差。

生成鏈接,定期匹配:(參數至少1和最多4個)

URL/(?:class_(movie|tv)/)*(?:year_(2013|2012|2011|2010|2009)/)*(?:region_region(‌​1|2)/)*(?:genre_region(1|2)/)* 

對不起,英語不是很好,使用GOGOLE翻譯。

四種過濾器的數據如下:(部分數據)

$class = array('movie', 'tv'); 
$year = array(2013, 2012, 2011, 2010, 2009); 
$region = array('region1', 'region2'); 
$genre = array('genre1', 'genre2'); 

我想產生一個數組包含的所有過濾器關聯。

希望得到以下一些數據:(部分數據)

Array 
(
    [0] => URL/class_movie/ 
    [1] => URL/class_movie/genre_genre1/ 
    [2] => URL/class_movie/genre_genre2/ 
    [3] => URL/class_movie/region_region1/ 
    [4] => URL/class_movie/region_region2/ 
    [5] => URL/class_movie/genre_genre1/region_region1/ 
    [6] => URL/class_movie/genre_genre1/region_region2/ 
    [7] => URL/class_movie/genre_genre2/region_region1/ 
    [8] => URL/class_movie/genre_genre2/region_region2/ 
    [9] => URL/class_movie/year_2013/ 
    [10] => URL/class_movie/year_2012/ 
    [11] => URL/class_movie/year_2011/ 
    [12] => URL/class_movie/year_2010/ 
    [13] => URL/class_movie/year_2009/ 
    [14] => URL/class_movie/genre_genre1/year_2013/ 
    [15] => URL/class_movie/genre_genre1/year_2012/ 
    [16] => URL/class_movie/genre_genre1/year_2011/ 
    [17] => URL/class_movie/genre_genre1/year_2010/ 
    [18] => URL/class_movie/genre_genre1/year_2009/ 
    [19] => URL/class_movie/genre_genre2/year_2013/ 
    [20] => URL/class_movie/genre_genre2/year_2012/ 
    [21] => URL/class_movie/genre_genre2/year_2011/ 
    [22] => URL/class_movie/genre_genre2/year_2010/ 
    [23] => URL/class_movie/genre_genre2/year_2009/ 
    [24] => URL/class_movie/region_region1/year_2013/ 
    [25] => URL/class_movie/region_region1/year_2012/ 
    [26] => URL/class_movie/region_region1/year_2011/ 
    [27] => URL/class_movie/region_region1/year_2010/ 
    [28] => URL/class_movie/region_region1/year_2009/ 
    [29] => URL/class_movie/region_region2/year_2013/ 
    [30] => URL/class_movie/region_region2/year_2012/ 
    [31] => URL/class_movie/region_region2/year_2011/ 
    [32] => URL/class_movie/region_region2/year_2010/ 
    [33] => URL/class_movie/region_region2/year_2009/ 
    [34] => URL/class_movie/genre_genre1/region_region1/year_2013/ 
    [35] => URL/class_movie/genre_genre1/region_region1/year_2012/ 
    [36] => URL/class_movie/genre_genre1/region_region1/year_2011/ 
    [37] => URL/class_movie/genre_genre1/region_region1/year_2010/ 
    [38] => URL/class_movie/genre_genre1/region_region1/year_2009/ 
    [39] => URL/class_movie/genre_genre1/region_region2/year_2013/ 
    [40] => URL/class_movie/genre_genre1/region_region2/year_2012/ 
    [41] => URL/class_movie/genre_genre1/region_region2/year_2011/ 
    [42] => URL/class_movie/genre_genre1/region_region2/year_2010/ 
    [43] => URL/class_movie/genre_genre1/region_region2/year_2009/ 
    [44] => URL/class_movie/genre_genre2/region_region1/year_2013/ 
    [45] => URL/class_movie/genre_genre2/region_region1/year_2012/ 
    [46] => URL/class_movie/genre_genre2/region_region1/year_2011/ 
    [47] => URL/class_movie/genre_genre2/region_region1/year_2010/ 
    [48] => URL/class_movie/genre_genre2/region_region1/year_2009/ 
    [49] => URL/class_movie/genre_genre2/region_region2/year_2013/ 
    [50] => URL/class_movie/genre_genre2/region_region2/year_2012/ 
    [51] => URL/class_movie/genre_genre2/region_region2/year_2011/ 
    [52] => URL/class_movie/genre_genre2/region_region2/year_2010/ 
    [53] => URL/class_movie/genre_genre2/region_region2/year_2009/ 
    [54] => URL/class_tv/ 
    [55] => URL/class_tv/genre_genre1/ 
    [56] => URL/class_tv/genre_genre2/ 
    [57] => URL/class_tv/region_region1/ 
    [58] => URL/class_tv/region_region2/ 
    [59] => URL/class_tv/genre_genre1/region_region1/ 
    [60] => URL/class_tv/genre_genre1/region_region2/ 
    [61] => URL/class_tv/genre_genre2/region_region1/ 
    [62] => URL/class_tv/genre_genre2/region_region2/ 
    [63] => URL/class_tv/year_2013/ 
    [64] => URL/class_tv/year_2012/ 
    [65] => URL/class_tv/year_2011/ 
    [66] => URL/class_tv/year_2010/ 
    [67] => URL/class_tv/year_2009/ 
    [68] => URL/class_tv/genre_genre1/year_2013/ 
    [69] => URL/class_tv/genre_genre1/year_2012/ 
    [70] => URL/class_tv/genre_genre1/year_2011/ 
    [71] => URL/class_tv/genre_genre1/year_2010/ 
    [72] => URL/class_tv/genre_genre1/year_2009/ 
    [73] => URL/class_tv/genre_genre2/year_2013/ 
    [74] => URL/class_tv/genre_genre2/year_2012/ 
    [75] => URL/class_tv/genre_genre2/year_2011/ 
    [76] => URL/class_tv/genre_genre2/year_2010/ 
    [77] => URL/class_tv/genre_genre2/year_2009/ 
    [78] => URL/class_tv/region_region1/year_2013/ 
    [79] => URL/class_tv/region_region1/year_2012/ 
    [80] => URL/class_tv/region_region1/year_2011/ 
    [81] => URL/class_tv/region_region1/year_2010/ 
    [82] => URL/class_tv/region_region1/year_2009/ 
    [83] => URL/class_tv/region_region2/year_2013/ 
    [84] => URL/class_tv/region_region2/year_2012/ 
    [85] => URL/class_tv/region_region2/year_2011/ 
    [86] => URL/class_tv/region_region2/year_2010/ 
    [87] => URL/class_tv/region_region2/year_2009/ 
    [88] => URL/class_tv/genre_genre1/region_region1/year_2013/ 
    [89] => URL/class_tv/genre_genre1/region_region1/year_2012/ 
    [90] => URL/class_tv/genre_genre1/region_region1/year_2011/ 
    [91] => URL/class_tv/genre_genre1/region_region1/year_2010/ 
    [92] => URL/class_tv/genre_genre1/region_region1/year_2009/ 
    [93] => URL/class_tv/genre_genre1/region_region2/year_2013/ 
    [94] => URL/class_tv/genre_genre1/region_region2/year_2012/ 
    [95] => URL/class_tv/genre_genre1/region_region2/year_2011/ 
    [96] => URL/class_tv/genre_genre1/region_region2/year_2010/ 
    [97] => URL/class_tv/genre_genre1/region_region2/year_2009/ 
    [98] => URL/class_tv/genre_genre2/region_region1/year_2013/ 
    [99] => URL/class_tv/genre_genre2/region_region1/year_2012/ 
    [100] => URL/class_tv/genre_genre2/region_region1/year_2011/ 
    [101] => URL/class_tv/genre_genre2/region_region1/year_2010/ 
    [102] => URL/class_tv/genre_genre2/region_region1/year_2009/ 
    [103] => URL/class_tv/genre_genre2/region_region2/year_2013/ 
    [104] => URL/class_tv/genre_genre2/region_region2/year_2012/ 
    [105] => URL/class_tv/genre_genre2/region_region2/year_2011/ 
    [106] => URL/class_tv/genre_genre2/region_region2/year_2010/ 
    [107] => URL/class_tv/genre_genre2/region_region2/year_2009/ 
    [108] => URL/year_2013/ 
    [109] => URL/year_2013/genre_genre1/ 
    [110] => URL/year_2013/genre_genre2/ 
    [111] => URL/year_2013/region_region1/ 
    [112] => URL/year_2013/region_region2/ 
    [113] => URL/year_2013/genre_genre1/region_region1/ 
    [114] => URL/year_2013/genre_genre1/region_region2/ 
    [115] => URL/year_2013/genre_genre2/region_region1/ 
    [116] => URL/year_2013/genre_genre2/region_region2/ 
    [117] => URL/year_2012/ 
    [118] => URL/year_2012/genre_genre1/ 
    [119] => URL/year_2012/genre_genre2/ 
    [120] => URL/year_2012/region_region1/ 
    [121] => URL/year_2012/region_region2/ 
    [122] => URL/year_2012/genre_genre1/region_region1/ 
    [123] => URL/year_2012/genre_genre1/region_region2/ 
    [124] => URL/year_2012/genre_genre2/region_region1/ 
    [125] => URL/year_2012/genre_genre2/region_region2/ 
    [126] => URL/year_2011/ 
    [127] => URL/year_2011/genre_genre1/ 
    [128] => URL/year_2011/genre_genre2/ 
    [129] => URL/year_2011/region_region1/ 
    [130] => URL/year_2011/region_region2/ 
    [131] => URL/year_2011/genre_genre1/region_region1/ 
    [132] => URL/year_2011/genre_genre1/region_region2/ 
    [133] => URL/year_2011/genre_genre2/region_region1/ 
    [134] => URL/year_2011/genre_genre2/region_region2/ 
    [135] => URL/year_2010/ 
    [136] => URL/year_2010/genre_genre1/ 
    [137] => URL/year_2010/genre_genre2/ 
    [138] => URL/year_2010/region_region1/ 
    [139] => URL/year_2010/region_region2/ 
    [140] => URL/year_2010/genre_genre1/region_region1/ 
    [141] => URL/year_2010/genre_genre1/region_region2/ 
    [142] => URL/year_2010/genre_genre2/region_region1/ 
    [143] => URL/year_2010/genre_genre2/region_region2/ 
    [144] => URL/year_2009/ 
    [145] => URL/year_2009/genre_genre1/ 
    [146] => URL/year_2009/genre_genre2/ 
    [147] => URL/year_2009/region_region1/ 
    [148] => URL/year_2009/region_region2/ 
    [149] => URL/year_2009/genre_genre1/region_region1/ 
    [150] => URL/year_2009/genre_genre1/region_region2/ 
    [151] => URL/year_2009/genre_genre2/region_region1/ 
    [152] => URL/year_2009/genre_genre2/region_region2/ 
    [153] => URL/region_region1/ 
    [154] => URL/region_region1/genre_genre1/ 
    [155] => URL/region_region1/genre_genre2/ 
    [156] => URL/region_region2/ 
    [157] => URL/region_region2/genre_genre1/ 
    [158] => URL/region_region2/genre_genre2/ 
    [159] => URL/genre_genre1/ 
    [160] => URL/genre_genre2/ 
) 

URL/year_2013/region_region1 /等於URL/region_region1/year_2013/

+0

'我已經3 arrays'我還以爲你有5 :) – swapnesh

+0

對不起,修改爲 – verglas

+2

這很好。祝你好運。我們不是代碼生成服務。 –

回答

1

讓我知道這是你正在尋找的東西 -

編輯3(最終編輯 - 請不要改變你的問題太頻繁,我還創造了從你的class_tv和NOT初始編輯該解決方案)

代碼的工作,並與您的所有提到的網址檢查 -

<?php 
$class = array('movie', 'tv'); 
$year = array(2013, 2012, 2011, 2010, 2009); 
$region = array('region1', 'region2'); 
$genre = array('genre1', 'genre2'); 
$i=1; 

$myarr = array(); 
foreach($class as $myclass) 
{ 
    $myarr[] = 'URL/'.'class_'.$myclass.'/'; 
    foreach($year as $myyear) 
    { 
     $myarr[] = 'URL/'.'year_'.$myyear.'/'; 
     $myarr[] = 'URL/'.'class_'.$myclass.'/year_'.$myyear.'/'; 
     foreach($region as $myregion) 
     { 
     $myarr[] = 'URL/'.'/region_'.$myregion.'/'; 
     $myarr[] = 'URL/'.'class_'.$myclass.'/region_'.$myregion.'/'; 
     $myarr[] = 'URL/'.'/year_'.$myyear.'/region_'.$myregion.'/';  
     $myarr[] = 'URL/'.'class_'.$myclass.'/year_'.$myyear.'/region_'.$myregion.'/'; 
      foreach($genre as $mygenre) 
      { 
       $myarr[] = 'URL/'.'/genre_'.$mygenre.'/'; 
       $myarr[] = 'URL/'.'class_'.$myclass.'/genre_'.$mygenre.'/'; 
       $myarr[] = 'URL/'.'class_'.$myclass.'/year_'.$myyear.'/genre_'.$mygenre.'/'; 
       $myarr[] = 'URL/'.'class_'.$myclass.'/region_'.$myregion.'/genre_'.$mygenre.'/'; 
       $myarr[] = 'URL/'.'class_'.$myclass.'/year_'.$myyear.'/region_'.$myregion.'/genre_'.$mygenre.'/';    
      } 
     } 
    } 
} 

$myarr = array_unique($myarr); 
echo "<pre>"; 
print_r($myarr); 

測試鏈接 -

URL/class_movie/ 
URL/class_movie/year_2013/ 
URL/class_movie/year_2013/region_region1/ 
URL/class_movie/year_2013/region_region1/genre_genre1/ 
URL/class_movie/region_region1/ 
URL/class_movie/region_region1/genre_genre1/ 
URL/class_movie/genre_genre1/ 
URL/class_tv/ 
URL/class_tv/year_2013/ 
URL/class_tv/year_2013/region_region1/ 
URL/class_tv/year_2013/region_region1/genre_genre1/ 
URL/class_tv/region_region1/ 
URL/class_tv/region_region1/genre_genre1/ 
URL/class_tv/genre_genre1/ 
+0

+1直截了當的解決方案,唯一缺失的部分是每個年份,流派和區域的空版本,如示例中所示。 – Orangepill

+0

@Orangepill嘿怎麼回事? :) ..老鷹的眼睛..thx :) ..我更新我的答案 – swapnesh

+0

可以不需要嵌套循環實施? 一些問題,如: URL/class_movie/year_2013/region_region2/genre_genre1不存在 – verglas