Création
d'entreprise
Posez votre question Signaler

[PHP] <br /> et sauts de lignes [Résolu]

ekra 1889Messages postés 15 avril 2005Date d'inscription - Dernière réponse le 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 !
Lire la suite 

[PHP] <br /> et sauts de lignes »

9 réponses
Réponse
+0
moins plus
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..
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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>

ekraekra - 3 juin 2006 à 18:14
Merci !!
ekraekra - 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é !
ekra- 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 ?
Ajouter un commentaire
Réponse
+0
moins plus
Un bon site sur les regex.

http://www.expreg.com/index.php
Ajouter un commentaire
Ce document intitulé « [PHP] <br /> et sauts de lignes » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?