[PHP] <br /> et sauts de lignes

Résolu/Fermé
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 3 juin 2006 à 09:45
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 4 juil. 2006 à 16:59
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

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 vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
3 juin 2006 à 14:01
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 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
3 juin 2006 à 15:08
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 vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
3 juin 2006 à 16:51
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 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
3 juin 2006 à 18:08
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
3 juin 2006 à 18:14
Merci !!
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
11 juin 2006 à 18:11
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 vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342 > ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014
4 juil. 2006 à 16:59
Ne serai-ce pas : /<br\s*\/>([\n\s]*<br\s*\/>)+/si et non /<br\s*\/>[\n\s]*<br\s*\/>+/si ?
0
Un bon site sur les regex.

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