src/curlient/crawler/ListCrawler.php
public static function parseListPageURL($config) {
		$lists = [];
		// 一个元素即为一个url.
		if (isset($config['entries']) && $config['entries']) {
			$es = $config['entries'];
			if (is_array($es)) {
				$lists += $es;
			} else {
				$ess   = explode("\n", trim($es));
				$lists += $ess;
			}
		}

		if (isset($config['expression'])) {
			$expression = $config['expression'];
			//正则
			if (preg_match('#\{\{\s*0\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(0|[1-9]\d*)\s*\}\}#', $expression, $tags)) {
				@list($all, $start, $end, $step, $pad) = $tags;
				$pad  = intval($pad);
				$step = intval($step);
				$step = $step === 0 ? 1 : $step;
				$nums = @range(intval($start), intval($end), $step);
				foreach ($nums as $num) {
					if ($pad > 1) {
						$num = str_pad($num, $pad, '0', STR_PAD_LEFT);
					}
					$lists[] = str_replace($all, $num, $expression);
				}
			}
		}

		return array_unique($lists);
	}
public static function parseListPageURL($config) {
		$lists = [];
		// 一个元素即为一个url.
		if (isset($config['entries']) && $config['entries']) {
			$es = $config['entries'];
			if (is_array($es)) {
				$lists += $es;
			} else {
				$ess   = explode("\n", trim($es));
				$lists += $ess;
			}
		}

		if (isset($config['expression'])) {
			$expression = $config['expression'];
			//正则
			if (preg_match('#\{\{\s*0\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(0|[1-9]\d*)\s*\}\}#', $expression, $tags)) {
				@list($all, $start, $end, $step, $pad) = $tags;
				$pad  = intval($pad);
				$step = intval($step);
				$step = $step === 0 ? 1 : $step;
				$nums = @range(intval($start), intval($end), $step);
				foreach ($nums as $num) {
					if ($pad > 1) {
						$num = str_pad($num, $pad, '0', STR_PAD_LEFT);
					}
					$lists[] = str_replace($all, $num, $expression);
				}
			}
		}

		return array_unique($lists);
	}
解析列表页规则.

@param $config

@return array