我使用PHP编写了使用HMVC架构的代码的小框架。以下是要访问的示例SEF URL。
http://domain.com/controller_name/method_name/param1/param2 http://domain.com/folder_name/controller_name/method_name/param1/param2
上面很好并且使用固定类型的数据。但是当我尝试构建一个简单的CMS时,我在另一个类别和其他类别中的类别等等,即内部有一组文章的多级类别结构,我无法使用上面的URL。我想要像
这样的东西http://domain.com/category-name/sub-category-name/sub-sub-category-name http://domain.com/category-name/sub-category-name/article-name
任何人都可以帮我解决上面的代码片段。
答案 0 :(得分:0)
如果我没有误解你想通过sefurl查询类别 首先,您需要将数据名称转换为sefurl
function sefurl($s){
$s=trim($s);
$tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',':',',');
$eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','');
$s = str_replace($tr,$eng,$s);
$s = preg_replace('/&.+?;/', '', $s);
$s = preg_replace('/\s+/', '-', $s);
$s = preg_replace('|-+|', '-', $s);
$s = preg_replace('/#/', '', $s);
$s = str_replace('.', '.', $s);
$s = trim($s, '-');
$s = htmlspecialchars(strip_tags(urldecode(addslashes(stripslashes(stripslashes(trim(htmlspecialchars_decode($s))))))));
return $s;
}
现在你可以测试一下 例如,我的分类名称是“这是一个测试分类”
sefurl($catname);
结果将像“this-is-a-test-categorig”
你可以将它用于categori id
在设置新的类别时将数据库名称转换为sefurl,而不是将其设置为sefurl冒号
,在数据库表格中创建一个新的冒号,如sefurl您可以通过sefurl查询分类
http://yourdomain.com/categori/this-is-a-categor-/
通过“/”解析网址,并在您的Categori表格中查询后获取“this-is-a-categor-”。