Уникальные слизни, которые, если подходят к слаг-1, слаг-2… слаг-н

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

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

Заранее благодарю вас!

Теги:
slug

1 ответ

1
Лучший ответ

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

  • 0
    Эта функция дает мне только заголовок как слизень. В другой части, MySQL запросов, мне придется проверить это. Я не знаю, как управлять: проверьте, возвращает ли slug значение true, если возвращает, проверьте, какое число является последним (NULL, -1, -2 ...).
  • 1
    Это именно то, на что я ответил. Сделайте функцию, которая возвращает количество раз, когда использовался слаг. Для этого вы не проверяете точное совпадение в SQL (LIKE или =), а проверяете шаблон регулярного выражения (RLIKE). dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню