我目前正在使用CodeIgniters教程中的精彩文档。然而,有一个经常使用的术语,它被称为“slug”。我经常环顾四周,找出这个术语的含义,我无法理解它是什么以及它是什么。这是一个使用它的例子:
使用此代码,您可以执行两个不同的查询。你可以得到所有 新闻记录,或通过其slug获取新闻项目
答案 0 :(得分:75)
当您访问资源时,slug是URL的一部分。假设您有一个显示系统中所有汽车的网址,例如下面的网址:
http://localhost/cars
当您想要引用系统中的特定汽车时,您将提供以下URL:
http://localhost/cars/audi-a6/
注意URL是如何仍然非常合乎逻辑,并且非常友好。在使用slug方面,这由您自行决定。上面的 audi-a6 字符串可能是系统中汽车的唯一标识符 - 假设您有一个包含以下字段的关系数据库:
id
car_name
car_brand
car_unique_identifier
然后,字段car_unique_identifier
将用于存储在slug中显示的值;在我上面用奥迪A6汽车指定的示例中,这是您的 audi-a6 字符串所在的位置。
您也可以通过其他方式使用它 - 例如,如果您有一个功能类似于博客的帖子控制器。如果是URL编码的话,页面的标题可能是它的slug。对于我们的文章“最佳方法来改善搜索引擎优化”,您可以提供以下网址:
http://localhosts/posts/best-ways-to-make-seo-better
然后你会在slug上运行url_decode()
,你将获得字符串使seo更好的最好方法,你可以使用它来通过它的标题查找帖子。
它不需要停在那里 - 你可能决定有多个slu to来表示某些东西 - 让我们来看看BBC是如何做到的。我从今天开始随机撰写一篇文章,其中包含以下网址:
http://www.bbc.co.uk/news/world-africa-24506006
这链接到一篇名为:的文章非洲联盟敦促国际刑事法院撤销针对领导人的案件。 BBC的做法是,他们使用 24506006 的 24506006 的最后一部分来识别系统中的唯一条目。然后,他们很可能使用 world-africa 来表示帖子所属的类别(虽然这可能只是一个假设,但它仍然是一个有根据的猜测)。
最后,让我们想象以下数据库表,用于研究论文。
id
category
title
您可能有一个类似下面的示例。
http://localhost/papers
此URL代表系统中当前的所有研究论文。然后,您将能够通过以下slug访问所有关于物理学的研究论文:
http://localhost/papers/physics
我们的slug是 physics ,我们的数据库选择当前看起来像:
SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'
然后,您可以公开以下网址:
http://localhost/papers/physics/gravitation
现在我们的slug由物理和引力组成。我们在幕后的查询可能类似于:
SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'
AND LOWER(papers.title) = 'gravitation'
这使我们能够唯一地识别我们系统中的条目。
所以我们反复使用slugs来过滤掉我们的信息。在这个例子中,当我们运行没有任何slugs的URL时:
http://localhost/papers
我们希望列出所有可用的研究论文。当我们使用 physics slug:
运行URL时http://localhost/papers/physics
我们希望列出所有关于 physics 的研究论文,从而缩小我们的结果。最后,当我们提供两个slug时,我们可以唯一地识别我们系统中的一个条目。
http://localhost/papers/physics/gravitation
我们可以对此进行不同的建模吗?当然!根据我们系统的要求,我们可以对关系表进行规范化和非规范化。我们本来可以有一个永久链接系统,所以我们的帖子表看起来像这样:
id
title
permalink
我们可能会有以下条目:
| 20013 | Gravitation | physics-gravitation-breakthrough |
因此公开了URL:
http://localhost/papers/physics-gravitation-breakthrough
在上面的例子中,slug 物理 - 引力 - 突破允许我们通过以下方式唯一识别帖子:
SELECT *
FROM papers
WHERE papers.permalink = physics-gravitation-breakthrough
答案 1 :(得分:14)
简短回答
它是此问题网址中的what-is-a-slug
部分。
答案 2 :(得分:4)
“slug”完全取决于上下文,但在编程中或者就此问题而言,“slug”指的是URL。我们知道URL can't contain every character。这就是为什么当任何帖子,页面,控制器都有这些类型的标题,所以它的slug用作URL。可能会自动导出。
因此,在一行中,slug是任何名称的 URL友好版。
答案 3 :(得分:0)
上面给出的所有答案都是正确的,但我想直接回答这个问题。 Codeigniter教程示例中的 Slug 是指URL“ news ”。如果您的数据库中没有“新闻”作为$ slug或slug,并且您在浏览器中运行此URL,则“index.php / news / view”将返回错误404_page未找到。 我遇到了这个问题,直到我阅读了上述答案,这些答案让我了解了Slug的含义。 我将slug更改为数据库表中的新闻。 Slug就像一个指针。
答案 4 :(得分:0)
以下是一个例子:
<?php
function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
?>