PHP多个数组组合创建URL

时间:2013-07-08 03:57:58

标签: php combinations

我正在尝试收集一个影视资源网站,资源列表中有四个可选的下拉框过滤器,试图使用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/
)

网址/ year_2013 / region_region1 /等于网址/ region_region1 / year_2013 /

1 个答案:

答案 0 :(得分:1)

请告诉我这是否是您要找的 -

编辑3 (最终修改 - 请不要太频繁地更改您的问题,我仍然会从您class_tv的初始修改中创建此解决方案而不是tv

代码正常运行并使用您提到的所有网址进行检查 -

<?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/