Question

J'utilise uniquement limace pour identifier une page sur le site, comme: example.tld / view / ce-fancy-limaces. Il est généré à partir du titre automatiquement avec cette fonction:

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;
}

Ceci retourne une limace parfaite ... mais j'ai besoin limaces uniques. Donc, j'ai combiner avec MySQL pour vérifier s'il existe une limace qui correspond à la création. Pas de problème avec cela.

Le problème est que je veux ajouter un -1 à la finale s'il y a une limace. Mais peut être bogué si on ajoute 3 limaces égales alors ... comment puis-je gérer ce pour aller de limace , limace-1 , limace-2 , slug-3 ... slug-100 , slug-n ?

Merci d'avance!

Était-ce utile?

La solution

Ne vous contentez pas de vérifier si cette limace identique est présent. Utilisez une expression régulière pour compter tous les limaces qui suivent le schéma /(<base-regex-for-slug>)(-\d+)?/. Parce que vous permettez à votre regex que des caractères alphanumériques de base ci-dessus sera la limace lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top