6 votes

Sauvegarde des sauts de ligne avec preg_replace

J'ai ce code pour sauvegarder les sauts de ligne dans la zone de texte saisie dans la base de données :

$input = preg_replace("/(\n)+/m", '\n', $input);

Lors de l'examen de l'entrée dans la base de données, les sauts de ligne sont effectivement enregistrés.
Mais le problème, c'est que lorsque je veux en faire l'écho, les sauts de ligne n'apparaissent pas. dans la sortie, comment puis-je conserver les sauts de ligne en entrée et les répercuter en sortie ? en sortie. Je ne veux pas utiliser <pre></pre> .

5voto

w3d Points 3138

Vous remplacez les séquences réelles de sauts de ligne dans le fichier $input avec la séquence littérale de deux caractères \n (backslash + n) - pas une nouvelle ligne. Ils doivent être reconvertis en retours à la ligne lorsqu'ils sont lus à partir de la base de données. Bien que je soupçonne que vous ayez l'intention de conserver ces lignes de séparation dans la base de données et que vous devriez plutôt utiliser une chaîne entre guillemets...

$input = preg_replace('/(\n)+/m', "\n", $input);

Notez que j'ai remplacé les délimiteurs de la première chaîne par des guillemets simples et la deuxième chaîne par des guillemets doubles. \n est une séquence spéciale dans une expression régulière pour indiquer une nouvelle ligne (ASCII 10), mais c'est aussi un caractère d'échappement en PHP pour indiquer la même chose - les deux peuvent parfois entrer en conflit.

3voto

Florent Points 6599

Je pense que PHP a la solution :

nl2br - Insère des sauts de ligne HTML avant toutes les nouvelles lignes d'une chaîne de caractères.

Editar: Vous devrez peut-être remplacer CR / LF pour qu'il fonctionne correctement.

// Convert line endings to Unix style (NL)
$input = str_replace(array("\r\n", "\r"), "\n", $input);

// Remove multiple lines
$input = preg_replace("/(\n)+/m", '\n', $input);

// Print formatted text
echo nl2br($input);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X