Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer l'URL parfaite

Sujet résolu
    27 mars 2017 à 1:00:32

    Bonjour,

    Je souhaite créer une URL (ou une string peu importe), à partir d'une chaîne en PHP.

    Je souhaite convertir n'importe quelle chaine en ayant au final que des lettres de a à z (en minuscule), des chiffres et des tirets entre chaque mot ou chaque apostrophe.

    En gros quelque chose comme ça :

    $var = 'Bonjour tout le monde, vive l\'écologie  (et oui) 32';

    Donnerait :

    $var = 'bonjour-tout-le-monde-vive-l-ecologie-a-et-oui-32';

    Pour ceux ou celles qui connaissent, je voudrais des URL comme Wordpress sait en produire. Ou comme sur ce forum en fait !

    D'avance merci pour votre aide !

    -
    Edité par Tilk2233 27 mars 2017 à 1:01:24

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2017 à 1:04:17

      Tu peux utiliser la fonction str-replace (Sa retourne un string)

      Voilà un lien: http://php.net/manual/fr/function.str-replace.php

      Je pense que l'exemple devrait être assez bon pour que tu comprenne :p

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2017 à 10:44:07

        Il existe des librairies qui permettent de réaliser cette manipulation sur Internet. Je te laisse le soin d'aller chercher mais je peux te donner un point de départ.

        • Partager sur Facebook
        • Partager sur Twitter
        Clef PGP: 4577 D41D 2F68 4552 ou https://keybase.io/l4p1n; Votre problème est résolu ? Mettez-le en résolu pour nous aider à nous retrouver ^^
          27 mars 2017 à 10:50:13

           C'est cadeau, c'est la fonction que j'utilise sur mes projets de manière générale ;)

          <?php
          /* Remplace caractères accentués d'une chaine */
          function remove_accent($str)
          {
            $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð',
                          'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã',
                          'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ',
                          'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ',
                          'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę',
                          'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī',
                          'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ',
                          'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ',
                          'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 
                          'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 
                          'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ',
                          'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
          
            $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O',
                          'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c',
                          'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u',
                          'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D',
                          'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g',
                          'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K',
                          'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o',
                          'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S',
                          's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W',
                          'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i',
                          'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
            return str_replace($a, $b, $str);
          }
          
          
          /* Générateur de Slug (Friendly Url) : convertit un titre en une URL conviviale.*/
          function Slug($str){
            return mb_strtolower(preg_replace(array('/[^a-zA-Z0-9 \'-]/', '/[ -\']+/', '/^-|-$/'),
            array('', '-', ''), remove_accent($str)));
          }
          
          ?>
          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2017 à 16:20:56

            @Streefy ta fonction est parfaite, sauf pour les apostrophes où elles ne sont pas remplacées par un "-", du coup "l'écologie" devient "lecologie".

            @lapin-math merci pour ta requête, j'ai trouvé mon bonheur grâce à toi :

            function slugify($text){
            	// replace non letter or digits by -
            	$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
            
            	// trim
            	$text = trim($text, '-');
            
            	// transliterate
            	$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
            
            	// lowercase
            	$text = strtolower($text);
            
            	// remove unwanted characters
            	$text = preg_replace('~[^-\w]+~', '', $text);
            
            	if(empty($text)){
            		return 'n-a';
            	}
            
            	return $text;
            }
            echo slugify('Bonjour tout le monde, vive l\'écologie  (et oui) 32');
            //donnera : bonjour-tout-le-monde-vive-l-ecologie-a-et-oui-32 

            Merci à tous pour votre aide :)

            Source : http://stackoverflow.com/questions/5305879/automatic-clean-and-seo-friendly-url-slugs

            -
            Edité par Tilk2233 27 mars 2017 à 16:24:55

            • Partager sur Facebook
            • Partager sur Twitter

            Créer l'URL parfaite

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown