php - 清理 URL 和数据库

标签 php database url

在我的数据库中有一个 URL 列可以存储一个 URL,例如:/this-is-a-keyword

然后在我的 php 查询中使用该列来获取我需要的信息,而不是使用整数列?

所以基本上,当我访问 Mysite.com/this-is-a-keyword 时,我会返回该行的结果。

最佳答案

或多或少,您所描述的称为 slug它通常是通过将最具描述性的字符串(通常是页面/帖子的标题)传递给 slugify 函数来构造的,like this one :

function Slug($string)
{
    return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
}

然而,这样做的问题是结果可能不是唯一的,请考虑以下几点:

echo Slug('Alix Axel');          // alix-axel
echo Slug('Álix Ãxel');          // alix-axel
echo Slug('@Álix----_Ãxel!?!?'); // alix-axel

尽管输入不同,但它们都返回相同的输出。我最喜欢(也是最普遍)的方法之一是像 StackOverflow 那样做(结合使用 ID 和 slug):

stackoverflow.com/questions/5845732/clean-urls-and-database

如果你想避免这种情况,你需要确保你生成的 slug 不存在于数据库中,如果它确实附加了一个递增的数字直到它满足唯一条件。

关于php - 清理 URL 和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5845732/

相关文章:

mysql - 有没有办法显示 mysql 中查询执行的实际 i/o

.net - 哪个 ORM 工具支持 Microsoft Access?

php - 基于多个字段创建序列的正确方法

php - Jquery 删除父级或父级直到特定的类名

php 包括不在主机服务器上工作但在本地(xampp)服务器上工作

java - 如何找到我的 Web 服务的 URL?

android - 我想在 XML 中定义一个 Android TextView,其中包含指向 URL 的链接的文本

javascript - 为什么 window.location 不加载新页面?

php - 在codeigniter中,如何通过将assets文件夹放入应用程序文件夹来使其工作?

php - updateOrCreate - Laravel 中的批量分配异常