检查字符串是否与数组键格式匹配

时间:2016-12-21 11:08:37

标签: php regex

我目前正在为我们的网站制作自定义URL路由脚本。我们希望将URL模式定义为数组键,并检查指定的URL是否与格式中的其中一个键匹配。

例如,我们有一个如下定义的数组:

$rewrites = array(
    'item[0-9].html' => array('target' => 'http://example.com')
);

我们希望在网址为$rewrites['item[0-9].html']时检索item1.html的数组,例如:

function get_info( $url )
{
    // $url = 'item1.html';
    // return value for $rewrites['item[0-9].html']
}

我们如何检查数组键是否存在并通过将item1.html传递给函数来检索其值?我担心循环遍历整个数组(将容纳约200个项目)并在密钥上执行preg_match()将会很慢。有没有更好的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

foreach ($rewrites as $key => $row) {
    preg_match_all('/item\d\.html/', $key, $matches);

    if (isset($matches[0][0])) {
        echo $matches[0][0];
    }
}

我希望这对你有所帮助。

答案 1 :(得分:0)

恕我直言200请求并不多,特别是如果你使用PHP7.0~,所以我建议使用preg_match_all,并使用命名模式这将帮助你获取结果的模式,但是这种方法,您可能有一个URL匹配多个模式。

composer require sabas/edifact

可以测试here