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 :

Mon preg_replace ne fonctionne pas si le texte contient des retours chariot


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Mon preg_replace ne fonctionne pas si le texte contient des retours chariot
    Bonjour,
    Je souhaite mettre en forme un contenu de texte issu d'une saisie WYSIWYG.
    Le texte dont je dispose est de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <span class="titre">Mon titre</span><br />
    <span class="presentation">Mon texte de présentation.<br />
    Il est sur plusieurs lignes.<br />
    <a href="http://www.test.fr" target="_blank">www.test.fr</a></span><br />
    <span class="normal">Ici mon texte normal<br />
    Il peut être sur plusieurs lignes aussi.</span><br />
    <span class="special">Et voici mon contenu spécial</span>
    Sont présents à la fois des <br /> et des \r\n puisque je vois des sauts en base de données.

    J'ai mis en place cette règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $offline = array('#<span class="titre">(.*)</span>#', '#<span class="presentation">(.*)</span>#', '#<span class="normal">(.*)</span>#', '#<span class="special">(.*)</span>#');
    $online = array('<h2 class="titre">$1</h2>', '<p class="presentation">$1</p>', '<p class="normal">$1</p>', '<p class="special">$1</p>');
    $html = preg_replace($offline, $online, $varNtotal["texte"]);
    echo $html;
    Cela fonctionne, dans le cas ci-dessus, sur les classes titre et special, car elles ne contiennent pas de retours chariot dans le texte. J'ai bien essayé de faire un str_replace sur mon $varNtotal["texte"], mais sans succès.
    Une idée ?

    Merci d'avance.

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour cela vous pouvez utiliser le modificateur "s" qui indique que le point peut remplacer un saut de ligne : '#<span class="normal">(.*)</span>#s' par exemple

    les modificateurs sont détaillés dans la documentation PHP
    http://php.net/manual/fr/reference.p....modifiers.php
    Vous pouvez aussi utiliser le site suivant pour faire des essais et avoir des détails sur les possibilités des expressions régulières :
    https://regex101.com/

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/08/2006, 19h00
  2. [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Par emeraudes dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2006, 13h38
  3. Réponses: 14
    Dernier message: 17/08/2006, 10h29
  4. [JSTL 1.0.6] affichage d'un texte avec des retour chariots
    Par clettebou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/08/2006, 10h16
  5. mon trigger ne fonctionne pas !
    Par japi33 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/03/2006, 21h26

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