[PHP] <br /> et sauts de lignes

Résolu
ekra Messages postés 1873 Statut Membre -  
ekra Messages postés 1873 Statut Membre -
Bonjour à tous,

Une fois de plus, je sollicite votre aide !

Je vous explique la situation :
Quelqu'un (un visiteur par exemple) rentre du texte dans un formulaire.

Mon but : remplacer 2 sauts de ligne par un nouveau paragraphe.

                $balises1 = array("<br /><br />");
		$balises2 = array("</p><p>");
		$contenu='<p>'.str_replace($balises1, $balises2, nl2br(htmlentities($contenu,ENT_QUOTES,"utf-8"))).'</p>';


Dans ma base de donnée, on stockera "$contenu" (le texte est donc maintenant sous forme HTML)

Le problème c'est que le "nl2br()" (remplacement de "entré" par <br />) remplace deux saut de ligne par :
blablabla<br />
<br />
blablabla ligne après 2 "entré"


Donc les deux <br /> ne sont pas collés ! Du coup il mon fonction ne les remplace pas.

Pourriez-vous m'aider ?
Merci d'avance !

4 réponses

  1. Choc
     
    Peut être en mettant une fin de ligne dans $balises1.
    $balises1 = array("<br />\r<br />");

    Ou
    $balises1 = array("\n\r\n\r");

    M'enfin, peut-être que je dis une connerie..
    1
  2. ekra Messages postés 1873 Statut Membre 342
     
    Bonjour,

    D'abord merci de ta réponse, mais malheuresement, ceci n'a pas résolu mon problème...
    J'ai essayé "<br />\n<br />" et "<br />\r<br />" :(

    voici le code enregistré sur la base de données :
    <p>Premier paragraphe. Phrase qui sert &agrave; rien.<br />
    <br />
    Deuxi&egrave;me paragraphe.<br />
    <br />
    Troisi&egrave;me.</p>


    Si vous avez d'autres idées, merci !
    0
  3. PhP Messages postés 1774 Statut Membre 606
     
    Bjr

    Et avec une expression régulière ?

    par ex

    <html>
    <body>
    <?php
    $pattern = '/<br\s*\/>[\n\s]*<br\s*\/>+/si';
    $replacement = '</p><p>';
    
    $contenu ="<p>Premier paragraphe. Phrase qui sert &agrave; rien.<br />\n".
    		"<br/>".
    		"Deuxi&egrave;me paragraphe.<br />".
    		"<br />".
    		"Troisi&egrave;me.</p>";
    
    echo preg_replace($pattern, $replacement, $contenu);
    ?>
    </body>
    </html>

    0
    1. ekra Messages postés 1873 Statut Membre 342
       
      Bonjour,

      Merci ! Ca marche au poil !

      Sinon, en ce qui concerne les chaînes du type "pattern" que tu m'as donné (comme '/<br\s*\/>[\n\s]*<br\s*\/>+/si') ou pourrais-je savoir comment en faire d'autres ?

      J'ai cru reconnaître :
      \s* : autant d'espaces qu'on veut
      [jkjk]*: autant de caractères qu'on veut contenus dans les crochets

      après
      +/si : aucune idée....
      / (d'introduction): pareil
      Ou pourrais-je trouver de l'aide pour ces "tags".

      Merci :)
      0
      1. ekra Messages postés 1873 Statut Membre 342 > ekra Messages postés 1873 Statut Membre
         
        Merci !!
        0
      2. ekra Messages postés 1873 Statut Membre 342 > ekra Messages postés 1873 Statut Membre
         
        Pardon de te déranger une fois de plus Php.

        J'ai lu pas mal de documentation sur les expression régulière (vu que ça à l'air bien pratique), mais il y a certaines choses que je voudrais que tu m'éclaires :
        /<br\s*\/>[\n\s]*<br\s*\/>+/si


        - je ne comprends pas le sens de "+" ici. Normalement il veut dire "j'en veux au moins une fois", mais c'est le ">" précédent qui doit y être au moins une fois ? Si oui pourquoi ne pas l'avoir mis sur les autres ">" ?
        - Je n'ai pas trouvé la signification de "/si".

        En tout cas, merci déjà de m'avoir aidé !
        0
      3. ekra Messages postés 1873 Statut Membre 342 > ekra Messages postés 1873 Statut Membre
         
        Ne serai-ce pas : /<br\s*\/>([\n\s]*<br\s*\/>)+/si et non /<br\s*\/>[\n\s]*<br\s*\/>+/si ?
        0