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