CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Function PHP pour un slug

PillsDispenser
PillsDispenser
Niveau 67
05 janvier 2020 à 13:24:27
// 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.

Xylis2
Xylis2
Niveau 7
05 janvier 2020 à 16:10:17

Utilise slugify

PillsDispenser
PillsDispenser
Niveau 67
05 janvier 2020 à 16:11:52

Le 05 janvier 2020 à 16:10:17 Xylis2 a écrit :
Utilise slugify

C'est-à-dire

patchwerk
patchwerk
Niveau 19
05 janvier 2020 à 17:26:42

https://github.com/cocur/slugify

PillsDispenser
PillsDispenser
Niveau 67
05 janvier 2020 à 19:15:16

j'utilise pas de framework

UndeadMarston6
UndeadMarston6
Niveau 10
05 janvier 2020 à 19:31:11

T'as pas besoin de framework pour utiliser ça

20_cent_2017
20_cent_2017
Niveau 10
05 janvier 2020 à 21:16:04

break et une requête dans une fonction de slug :/

je vais rien dire ce soir XD

PillsDispenser
PillsDispenser
Niveau 67
09 janvier 2020 à 01:00:41

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

?

20_cent_2017
20_cent_2017
Niveau 10
09 janvier 2020 à 05:46:11

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;

Pseudo supprimé
Pseudo supprimé 10 janvier 2020 à 14:07:30
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.

PillsDispenser
PillsDispenser
Niveau 67
13 janvier 2020 à 10:13:37

c'est juste l'ajout du setlocal que tu fais ?

-TrAsHeR-
-TrAsHeR-
Niveau 3
18 janvier 2020 à 08:51:06

Perso j'utilise https://github.com/cocur/slugify c'est vraiment le meilleur et très modulable.

PillsDispenser
PillsDispenser
Niveau 67
09 mai 2020 à 15:32:59

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

Nuagedecube
Nuagedecube
Niveau 25
09 mai 2020 à 16:11:34

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é.

PillsDispenser
PillsDispenser
Niveau 67
09 mai 2020 à 17:14:41

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

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment