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 :

Problème de 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
    Chomeur
    Inscrit en
    Février 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Février 2013
    Messages : 37
    Par défaut Problème de regex
    Bonjour

    Je souhaite remplacer des caractères en balises correspondant dans le texte suivant :

    # **G**estion de **R**essources **I**nformatiques **S**ociale et **S**olidaire
    ## Nous construisons une approche nouvelle de l'entreprise
    Notre monde est diversité et la diversité humaine est son plus bel exemple. Certains d'entre nous possèdent la richesse d'un fonctionnement neurologique différent, alternatif et hors du commun. La neurodiversité est une chance pour notre monde. GRISS la saisit.

    Nous voyons un grand potentiel chez les personnes autistes et GRISS leur donne la possibilité de transformer leurs compétences et d'utiliser leurs talents de façon productive. Nos ingénieurs sont doués d'un sens analytique développé, de capacité de compréhension rapide, d'un grand souci du détail, d'une concentration extrême et d'une persévérance exceptionnelle.

    GRISS est unique en France. Elle est la première et seule entreprise française à démontrer ces qualités en recrutant et s'engageant pour la neurodiversité. Pour cela, nous construisons une approche différente de l'entreprise. Son organisation et les rapports professionnels visent l'épanouissement personnel de nos collaborateurs.
    ## Sociale et solidaire

    En créant une *SCOP* (**S**ociété **Co**opérative et **P**articipative) GRISS devient une entreprise participative et démocratique. Les salariés de GRISS ont la possibilité de devenir associés et de participer pleinement à la vie en entreprise.

    En tant qu'entreprise de l'*ESS* (**É**conomie **S**ociale et **S**olidaire) nous créons une dynamique de développement fondée sur un ancrage territorial et une mobilisation citoyenne.
    Les ** ** correspondent à<strong></strong>, * *= <em>>/em>, # = <h1> [le texte qui suit] </h1>, ## <h2> [le texte qui suit] </h2>

    Je fais appel à preg_replace et donc à des expressions réguliaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //$Text contient le texte ci dessus à modifier
    preg_replace('#\#(.+)\r#','<h1>$1</h1>',$Text);
    preg_replace('#\#\#(.+)\r#','<h2>$1</h2>',$Text);
    preg_replace('#\*(.+)\*#','<EM>$1</EM>',$Text);
    preg_replace('#\*\*(.+)\*\*#','<Strong>$1</Strong>',$Text);
    Mais ça ne marche pas. Apparemment, les regex faites sont foireuses et je n'arrive pas à trouver comment les tourner pour obtenir ce que je veux.

    Auriez-vous une idée ?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 714
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 714
    Par défaut
    déjà la fonction http://php.net/preg_replace retourne la chaine modifiée donc il faut la récupérer à chaque appel avec $Text =.

    ensuite dans votre cas vous avez besoin du modificateur U, regardez l'adresse suivante pour mieux comprendre
    https://regex101.com/r/fX5xH0/1

    et pour finir vous devez par exemple faire le remplacement de ## avant #sinon vous allez vous retrouver avec #<h1>titre 2</h1>.

    donc au final essayez cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $Text = preg_replace('#\#\#(.+)\r#U','<h2>$1</h2>',$Text);
    $Text = preg_replace('#\#(.+)\r#U','<h1>$1</h1>',$Text);
    $Text = preg_replace('#\*\*(.+)\*\*#U','<Strong>$1</Strong>',$Text);
    $Text = preg_replace('#\*(.+)\*#U','<EM>$1</EM>',$Text);
     
    echo $Text;

Discussions similaires

  1. [Java] Problème de Regex
    Par spk4ever dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2006, 11h51
  2. Problème avec Regex
    Par trihanhcie dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2006, 15h50
  3. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 16h32
  4. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 16h48
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 11h26

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