[PHP] <br /> et sauts de lignes

Résolu
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   -  
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

4 réponses

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
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   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
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   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
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   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
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606 > ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention  
 
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342 > ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !!
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342 > ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention  
 
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
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342 > ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention  
 
Ne serai-ce pas : /<br\s*\/>([\n\s]*<br\s*\/>)+/si et non /<br\s*\/>[\n\s]*<br\s*\/>+/si ?
0
Yvan
 
Un bon site sur les regex.

http://www.expreg.com/index.php
0