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

  1. #1
    Membre à l'essai
    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
    Points : 13
    Points
    13
    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 201
    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 201
    Points : 4 665
    Points
    4 665
    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 à l'essai
    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
    Points : 13
    Points
    13
    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 201
    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 201
    Points : 4 665
    Points
    4 665
    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 à l'essai
    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
    Points : 13
    Points
    13
    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 201
    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 201
    Points : 4 665
    Points
    4 665
    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 ...

  7. #7
    Membre à l'essai
    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
    Points : 13
    Points
    13
    Par défaut
    oui il se peut un problème d'encodage

    j'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //encodage
    $string = iconv ('UTF-8', 'US-ASCII//TRANSLIT//IGNORE', $chaine);
     
    //remplacer par vide les caractères spéciaux sauf les chiffres et de a à z et l'espace 
    $string = preg_replace ('#[^.0-9a-z ]+#i', '', $string);
     
    //remplacer l'espace par un tiret
    $string = preg_replace ('#[^.0-9a-z]+#i', '-', $string);
    ça marche bien pour votre aide

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 201
    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 201
    Points : 4 665
    Points
    4 665
    Par défaut
    Mais normalement il n'y a pas a faire ca (iconv() )

    puisque l'on doit avoir le même encodage partout dans les sources, la page web et les bases de données.
    Bien sur, la seule exeption est une importation depuis une base externe dans un encodage différent.

  9. #9
    Membre à l'essai
    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
    Points : 13
    Points
    13
    Par défaut
    oui, mon encodage de la page est UTF-8 et l'encodage de la bdd aussi UTF-8

+ 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