php - 将带有 id 的各种 url 与带有占位符的 url 匹配
问题描述
我有两个 url 数组:ArrayA 和 ArrayB。我需要知道 ArrayB 中的哪些 url(相同的 url 可以多次出现)与 ArrayA 中的哪个 url 匹配(这里的 url 是唯一的)。
我将使用 foreach 循环遍历 ArrayB 并尝试匹配 url。
ArrayA 包含以下网址:
- 客户/{client_id}/projects/{project_id}
- 客户/{client_id}
- 活动/{activity_id}
- 活动/{activity_id}/编辑
ArrayB 包含以下网址:
- 客户/123/项目/23
- 客户/5/项目/12
- 客户/1
- 客户/52
- 活动/52
- 活动/35
- 活动/52/编辑
- 活动/35/编辑
我想将 ArrayB 中的每个 url 与 ArrayA 中的正确 url 匹配,如果找到匹配项,则立即对其执行操作(因此无需保存任何内容)。ArrayB 中的路由始终只匹配 ArrayA 中的一个路由(因此是:1 关系)。
$arrayA = getPossibleRoutes();
$arrayB = getActivatedRoutes();
// YOUR CODE
我希望创建一个遍历 ArrayA 或 ArrayB 的 foreach 循环(最有可能是嵌套循环),并在找到匹配项后立即执行操作。
解决方案
尝试这个 :
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
}
}
}
推荐阅读
- python - 在树莓派中运行热敏打印机检测到一些问题
- php - 我无法让 PHP 中的 rename() 函数工作(或任何文件修改函数)
- imagemagick - 使用 Imagemagick 创建带有阴影的 MacOS 风格的屏幕截图
- javascript - Ember 如何更新 NPM 包 clean-css
- php - 在 PHP 中使用多个查询加载 XML 数据时出现问题
- javascript - 为什么我仍然得到一个作为返回值的承诺
- coq - 使用功能方案解决 CoqIDE 8.11 的“vernac 的非法开始”错误
- ruby-on-rails - 管理员用户的活动管理员登录仅在 localhost 上的 Chrome 中使用正确的凭据重定向回登录页面
- loopbackjs - Loopback 4 中基于模式的多租户
- node.js - 使用 node.js 为存储在 db 中的 url 在 angular carousel 中显示 youtube 视频