首页 > 解决方案 > 将带有 id 的各种 url 与带有占位符的 url 匹配

问题描述

我有两个 url 数组:ArrayA 和 ArrayB。我需要知道 ArrayB 中的哪些 url(相同的 url 可以多次出现)与 ArrayA 中的哪个 url 匹配(这里的 url 是唯一的)。

我将使用 foreach 循环遍历 ArrayB 并尝试匹配 url。

ArrayA 包含以下网址:

ArrayB 包含以下网址:

我想将 ArrayB 中的每个 url 与 ArrayA 中的正确 url 匹配,如果找到匹配项,则立即对其执行操作(因此无需保存任何内容)。ArrayB 中的路由始终只匹配 ArrayA 中的一个路由(因此是:1 关系)。

$arrayA = getPossibleRoutes();
$arrayB = getActivatedRoutes();

// YOUR CODE

我希望创建一个遍历 ArrayA 或 ArrayB 的 foreach 循环(最有可能是嵌套循环),并在找到匹配项后立即执行操作。

标签: phpregex

解决方案


尝试这个 :

foreach($arrayA as $item){
        $patterns[$item] = preg_replace(['/(\{\w*\})/','/\//'],['\d+','\/'],$item);
}

foreach ($arrayB as $arr) {
        foreach($patterns as $route => $pattern){
                if (preg_match('/^'.$pattern.'$/', $arr))
                {
                        //the matched route is $route
                }
        }
}

推荐阅读