Уникальные слизни, которые, если соответствует слагу-1, слаг-2 ... слаг-н - PullRequest
0 голосов
/ 05 октября 2010

Я использую только 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, чтобы проверить, существует ли слаг, который соответствует созданным.Нет проблем с этим.

Проблема в том, что я хочу добавить -1 в финале, если есть ОДИН слаг.Но может быть глючить, если добавлены 3 одинаковых слага, так что ... как мне это сделать, чтобы перейти от слаг , слаг-1 , слаг-2 Слизняк-3 ... Слизняк-100 , Слизняк-н ?

Заранее спасибо!

1 Ответ

1 голос
/ 05 октября 2010

Не просто проверьте, присутствует ли этот идентичный слизень.Используйте регулярное выражение для подсчета всех слагов, которые следуют шаблону /(<base-regex-for-slug>)(-\d+)?/.Поскольку вы разрешаете только буквенно-цифровые символы, вашим базовым регулярным выражением будет сам слаг.

...