IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Remplacements avec la fonction preg_replace [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut Remplacements avec la fonction preg_replace
    Bonjour à tous,

    Je veux bien modifier une chaîne de caractère comme cet exemple:
    "chaîne de caractère" ==> devient "chaine-de-caractere"

    j'ai utilisé cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function format_url($chaine) { 
     
        $chaine=strtolower($chaine);
     
        $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/", "/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
        $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
        $chaine = preg_replace($accents, $sans, trim($chaine));  
        $chaine = preg_replace('#[^A-Za-z0-9]#', '-', trim($chaine));
     
       $chaine = preg_replace( "/\-+/i", '-', trim($chaine) );
     
       $chaine = rtrim( $chaine, '-' );
     
        while (strpos($chaine,'--') !== false) 
    		$chaine = str_replace('--', '-', $chaine);
     
        return $chaine; 
     
    }
    mais le résultat de la chaine ==> "cha-ne-de-caract-re"
    il remplace les caractères spéciaux par un '-'

    Merci pour vos aides

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    juste ces 2 lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine = preg_replace($accents, $sans, trim($chaine));  
        //$chaine = preg_replace('#[^A-Za-z0-9]#', '-', trim($chaine));
    $chaine = preg_replace( "/\s+/", '-', $chaine );

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut
    merci, je l'ai utilisé mais maintenant il affiche les caractères spéciaux, càd

    "chaîne de caractère" ===> "chaîne-de-caractère"

    je veux qu'elle soit avec cette forme: "chaine-de-caractere"

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function format_url($chaine)
    { 
        $chaine=strtolower($chaine);
     
        $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/", "/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
        $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
    	$chaine = preg_replace($accents, $sans, trim($chaine));  
    	$chaine = preg_replace('![^'.preg_quote('-').'\pL\pN\s]+!u', '', $chaine);
    	$chaine = preg_replace( "/\s+/", '-', $chaine );
     
        $chaine = rtrim( $chaine, '-' );
     
        while (strpos($chaine,'--') !== false) 
    		$chaine = str_replace('--', '-', $chaine);
     
        return $chaine; 
    }

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut
    Dommage ne fonctionne pas non plus

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Citation Envoyé par wass878 Voir le message
    Dommage ne fonctionne pas non plus
    ?
    moi j'ai format_url: chaine-de-caractere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<br>format_url: '.format_url('chaîne de caractère ! ');
    tu as peut être un probleme d'encodage utf-8 <-> iso ?
    par exemple code source utf8 et data entrée en iso ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/08/2014, 18h24
  2. [RegEx] Fonction preg_replace avec référence arrière
    Par lesanglier dans le forum Langage
    Réponses: 2
    Dernier message: 01/07/2009, 12h28
  3. [RegEx] Rechercher/remplacer avec preg_replace
    Par olbouss dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2009, 12h00
  4. Remplacer des caractères avec la fonction string.replace
    Par chtom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2008, 16h43
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo