0

我只使用 slug 来识别网站上的页面,例如: example.tld/view/this-fancy-slug 。这是使用此功能自动从标题生成的:

public static function Normalize($str)
{
    $charset = "UTF-8";
    $separator = "-";

    $str = strtolower(htmlentities($str, ENT_COMPAT, $charset));
    $str = preg_replace('/&(.)(acute|cedil|circ|lig|grave|ring|tilde|uml);/', "$1", $str);
    $str = preg_replace('/([^a-z0-9]+)/', $separator, html_entity_decode($str, ENT_COMPAT, $charset));
    $str = trim($str, $separator);

    return $str;
}

这会返回一个完美的蛞蝓......但我需要独特的蛞蝓。所以我必须结合 mysql 来检查是否存在适合创建的 slug。没问题。

问题是如果有一个蛞蝓,我想在决赛中添加一个-1。但是如果添加 3 个相等的 slug 可能会出现问题......我如何管理这个从slugslug-1slug-2slug-3 ... slug-100slug-n

先感谢您!

4

1 回答 1

1

不要只检查是否存在相同的蛞蝓。使用正则表达式计算所有遵循该模式的 slug /(<base-regex-for-slug>)(-\d+)?/。因为您只允许字母数字,所以您上面的基本正则表达式将是 slug 本身。

于 2010-10-05T10:02:07.040 回答