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 :

Effacer tous les points sauf le dernier en fin de phrase [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut Effacer tous les points sauf le dernier en fin de phrase
    Bonjour, j'ai commencé à faire un preg_replace pour supprimer les points d'un domaine et de laisser seulement un point pour la terminaison d'une phrase. Sauf que ça deviens lours à gérer.

    Je veux éliminer tous les points d'une phrase sauf le dernier dans une phrase.

    Voici mon regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#\.(^\s)*(?=\w)|\s\.\s*(?=\w)|\s+\.(?!=\w)|(\.)\2|[:/]#i', '', $subject);
    Ça donne ceci :

    domaine.ltd (remplacé)
    domaine .ltd (remplacé)
    domaine . ltd (remplacé)
    domaine. ltd (pas remplacé et c'est ce que je voulais)
    domaine. . ltd (un pas remplacé et l'autre oui mais un problème ici)

    J'explique le problème: celui-la, créé un "domaine.ltd" et le but du regex est de remplacer les points pour ne pas fiare de domaine.

    Alors, je veux n'accepter qu'un seul point et à la toute fin de phrase sans aucun autre caractère par la suite sauf un espace ou non.

    Donc, comment serait mon regex?

    De l'aide serait apprécié.

    PS, Résultat dans un outils de test :
    http://lumadis.be/regex/test_regex.php?id=759

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    tu veux remplacer des points dans un domaine mais dans ton exemple il y a aussi des espaces. C'est peut être un bug ?

    Essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo preg_replace('#\.{1,}#', '', str_replace( ' ', '', $subject)) ;

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    A l'origine c'était pour éliminer les points qui ne terminent pas une phrase
    de manière à éliminer les noms de domaine du genre www.domaine.com.
    pour éviter la publicité dans un texte.

    Votre solution semble être bonne mais il faudrait pouvoir laisser le dernier
    point de la phrase. Donc, détecter s'Il y a autre chose après la phrase.
    Et laisser les espaces qui sont utile dans une phrase.

    Une chose, je ne savais pas que je pouvais ajouter des commandes php
    dans un preg_remplace. Merci kodeya pour l'astuce.

    Pour ce qui est des initiale tel que Mr. Mme. etc. Je ne sais pas. Mais
    l'essentiel est de pouvoir éliminer les points pour ne pas constituer de
    nom de domaine dans une phrase.

    Citation Envoyé par kodeya Voir le message
    tu veux remplacer des points dans un domaine mais dans ton exemple il y a aussi des espaces. C'est peut être un bug ?

    Essaie ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo preg_replace('#\.{1,}#', '', str_replace( ' ', '', $subject)) ;

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = "je. suis. une. chaine. de. caractères.";
    echo str_replace('.', '', $str) . '.';
    Tout simplement.

  5. #5
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Merci Benjamin, vraiment simple en plus.

    Citation Envoyé par Benjamin Delespierre Voir le message
    Hello

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $str = "je. suis. une. chaine. de. caractères.";
    echo str_replace('.', '', $str) . '.';
    Tout simplement.

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

Discussions similaires

  1. [AC-2007] Effacer tous les elements d'un listbox sauf l'entete
    Par mamadouabd dans le forum VBA Access
    Réponses: 6
    Dernier message: 05/04/2011, 07h17
  2. Sélection de tous les enregistrements sauf le dernier
    Par Tonio_35 dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/07/2006, 17h59
  3. Tous les champs SAUF dans une table.
    Par Yepazix dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/08/2005, 16h01
  4. [JTree] Suppresion de tous les noeuds sauf la racine
    Par nicolaskarp dans le forum Composants
    Réponses: 3
    Dernier message: 29/04/2005, 12h53
  5. selectionner tous les champs sauf un ?
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2005, 15h51

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