我目前正在为我们的网站制作自定义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()
将会很慢。有没有更好的方法来实现这一目标?
答案 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