我有以下网址结构,我需要匹配并从中获取特定的ID:
/group/subgroup/id-name
简而言之,我需要翻译以下网址:
/Blue Products/Dark Blue/5-Blue_Jelly
要:
/?pagename=Blue Products&model=5
重要提示:我不需要匹配group
,我已经有了小组。
示例代码:
<?php
foreach($cats as $cat)
$cmd->rewrite('/\/'.$cat.'\/unused\/(ID)-unused\//','/?pagename='.$cat.'&model=%ID%');
?>
修改
这是完成的代码:
if($groups->count()){
$names=array();
foreach($groups->rows as $row)
$names[]=preg_quote($row->group);
$names=implode('|',$names);
$regex='('.$names.')/([^/]+)/([0-9]{1,})-([^/]+)/?$';
CmsHost::cms()->rewrite_url($regex,'index.php?pagename=Products',true);
}
答案 0 :(得分:2)
您可以使用\d+
来匹配 d ecimals。
$cmd->rewrite("#/$cat/.+?/(\d+)-.*?/#', ...
使用#
作为外部分隔符,以避免无关的\/
转义
答案 1 :(得分:1)
为什么在使用简单的字符串函数时可以使用正则表达式:
$parts = explode('/', trim('/Blue Products/Dark Blue/5-Blue_Jelly', '/'));
list($group, $subgroup, $id_name) = $parts;
答案 2 :(得分:1)
试试这个:
$url = preg_replace("'/".$cat."/[^/]+/([0-9]+)-.*'i","/?pagename=".$cat."&model=\\1",$url);
希望这有效!