// Generate Slug
public function generateSlug($slug)
{
// replace non letter or digits by -
$slug = preg_replace('~[^\pL\d]+~u', '-', $slug);
// transliterate
$slug = iconv('utf-8', 'us-ascii//TRANSLIT', $slug);
// remove unwanted characters
$slug = preg_replace('~[^-\w]+~', '', $slug);
// trim
$slug = trim($slug, '-');
// remove duplicate -
$slug = preg_replace('~-+~', '-', $slug);
// lowercase
$slug = strtolower($slug);
if (empty($slug)) {
$slug = "n-a";
}
$i = 0;
$slug_save = $slug;
// Check if slug is used
while (true) {
$query = $this->getDb()->prepare('SELECT COUNT(news_slug) FROM news WHERE news_slug=:news_slug');
$query->bindParam(':news_slug', $slug);
$query->execute();
$count = $query->fetch();
if ((int)$count[0] === 0) {
break;
}
// Increment slug
$i++;
$slug = $slug_save."-".$i;
}
return $slug;
}
Bonjour
J'ai un problème des lettres sont supprimés comme le é ou ë du coup j'ai un trou dans mon slug et ca fait vraiment moche.
Utilise slugify
Le 05 janvier 2020 à 16:10:17 Xylis2 a écrit :
Utilise slugify
C'est-à-dire
https://github.com/cocur/slugify
j'utilise pas de framework
T'as pas besoin de framework pour utiliser ça
break et une requête dans une fonction de slug :/
je vais rien dire ce soir XD
Le 05 janvier 2020 à 21:16:04 20_cent_2017 a écrit :
break et une requête dans une fonction de slug :/je vais rien dire ce soir XD
?
Ton code c'est de la merde ....
Ta fonction suggère dois faire juste le slug
Ensuite ta des choses à pas faire :
While (true) par exemple.
Voilà. Perso je n'utilise jamais break. Sauf pour un switch.
Donc normalement si tu fais bien les choses ta zéro break.
C'est comme les or die;
function slugify($string, $delimiter = '-')
{
$oldLocale = setlocale(LC_ALL, '0');
setlocale(LC_ALL, 'en_US.UTF-8');
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower($clean);
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
$clean = trim($clean, $delimiter);
setlocale(LC_ALL, $oldLocale);
return $clean;
}
Cadeau.
c'est juste l'ajout du setlocal que tu fais ?
Perso j'utilise https://github.com/cocur/slugify c'est vraiment le meilleur et très modulable.
Le 18 janvier 2020 à 08:51:06 -TrAsHeR- a écrit :
Perso j'utilise https://github.com/cocur/slugify c'est vraiment le meilleur et très modulable.
Ouais mais faut installer plein de truc juste pour une fonction
Le 05 janvier 2020 à 13:24:27 PillsDispenser a écrit :
J'ai un problème des lettres sont supprimés comme le é ou ë du coup j'ai un trou dans mon slug et ca fait vraiment moche.
La function remplace les accents, je pense que le problème peut venir de la bdd, un caractère illégal dans le champ qui ne peut être traité ou la page mal encodé.
Le 10 janvier 2020 à 14:07:30 [Myster] a écrit :
function slugify($string, $delimiter = '-') { $oldLocale = setlocale(LC_ALL, '0'); setlocale(LC_ALL, 'en_US.UTF-8'); $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $string); $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean); $clean = strtolower($clean); $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean); $clean = trim($clean, $delimiter); setlocale(LC_ALL, $oldLocale); return $clean; }
Cadeau.
Cette fonction fonction comme je veux a priori les lettres sont pas supprimés