Rechercher : dans
Par :

[PHP] <br /> et sauts de lignes

Dernière réponse le 4 jui 2006 à 16:59:29 ekra, le 3 jun 2006 à 09:45:15 
 Signaler ce message aux modérateurs

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 !

Meilleures réponses pour « [PHP]
et sauts de lignes
 » dans :
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) VoirConversion format de fichier DOS UNIX / UNIX DOS Préambule Ce qu'il faut savoir Conversion DOS vers UNIX Conversion UNIX vers DOS Préambule Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce...
Les balises HTML VoirHTML, un langage à balises Le HTML n'est pas un langage de programmation. Il s'agit d'un langage permettant de décrire la mise en page et la forme d'un contenu rédigé en texte simple. Une page HTML est ainsi un simple fichier texte...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...

1

Choc, le 3 jun 2006 à 13:33:43

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..

Répondre à Choc

2

ekra, le 3 jun 2006 à 14:01:53

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 !

Répondre à ekra

3

PhP, le 3 jun 2006 à 15:08:47

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>

PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

4

ekra, le 3 jun 2006 à 16:51:56

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 :)

Répondre à ekra

5

PhP, le 3 jun 2006 à 18:08:40

Ici bien sûr !

http://fr.php.net/manual/fr/reference.pcre.pattern.syntax.ph­p

PhP  
Il y a 10 types de personnes dans le monde : ceux qui compre­nnent le binaire et les autres ...

Répondre à PhP

6

ekra, le 3 jun 2006 à 18:14:17

Merci !!

Répondre à ekra

7

ekra, le 11 jun 2006 à 18:11:15

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é !

Répondre à ekra

9

 ekra, le 4 jui 2006 à 16:59:29

Ne serai-ce pas : /<br\s*\/>([\n\s]*<br\s*\/>)+/si et non /<br\s*\/>[\n\s]*<br\s*\/>+/si ? Vive Linux, les vacances et les gauffres !

Répondre à ekra

8

Yvan, le 11 jun 2006 à 20:59:50

Un bon site sur les regex.

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

Répondre à Yvan
Collection CommentÇaMarche.net