什么是slu ??

时间:2013-10-12 14:22:40

标签: php codeigniter frameworks

我目前正在使用CodeIgniters教程中的精彩文档。然而,有一个经常使用的术语,它被称为“slug”。我经常环顾四周,找出这个术语的含义,我无法理解它是什么以及它是什么。这是一个使用它的例子:

  

使用此代码,您可以执行两个不同的查询。你可以得到所有   新闻记录,或通过其slug获取新闻项目

5 个答案:

答案 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'
  ?>