for bbcode :
<?php
$message = nl2br(preg_replace('#(\\]{1})(\\s?)\\n#Usi', ']', stripslashes($message)));
?>
nl2br
(PHP 4, PHP 5)
nl2br — Inserta saltos de línea HTML antes de todas las nuevas líneas de un string
Descripción
string nl2br
( string
$string
[, bool $is_xhtml = true
] )
Devuelve el parámetro string con un '<br />' o
'<br>' insertado antes de cada nueva línea. (\r\n,
\n\r, \n y \r).
Parámetros
-
string -
El string de entrada.
-
is_xhtml -
Si utilizar saltos de línea compatibles con XHTML o no.
Valores devueltos
Devuelve el string alterado.
Ejemplos
Ejemplo #1 Usar nl2br()
<?php
echo nl2br("foo no es\n bar");
?>
El resultado del ejemplo sería:
foo no es<br /> bar
Ejemplo #2 Generar marcado HTML válido utilizando el parámetro is_xhtml
<?php
echo nl2br("Bienvenido\r\nEste es mi documento HTML", false);
?>
El resultado del ejemplo sería:
Bienvenido<br> Este es mi documento HTML
Ejemplo #3 Varios separadores de nueva línea
<?php
$cadena = "Esto\r\nes\n\runa\ncadena\r";
echo nl2br($cadena);
?>
El resultado del ejemplo sería:
Esto<br /> es<br /> una<br /> cadena<br />
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.3.0 |
Se agregó el parámetro opcional is_xhtml.
|
| 4.0.5 |
nl2br() es ahora compatible con XHTML. Todas las versiones enteriores
devolverán un string con un '<br>' insertado
antes de las nuevas líneas, en lugar de '<br />'.
|
Ver también
- htmlspecialchars() - Convierte caracteres especiales en entidades HTML
- htmlentities() - Convierte todos los caracteres aplicables a entidades HTML
- wordwrap() - Ajusta un string hasta un número dado de caracteres
- str_replace() - Reemplaza todas las apariciones del string buscado con el string de reemplazo
j dot mons54 at gmail dot com ¶
1 year ago
blacknine313 at gmail dot com ¶
5 years ago
After a recent post at the forums on Dev Shed, I noticed that it isn't mentioned, so I will mention it.
nl2br returns pure HTML, so it should be after PHP anti-HTML functions ( such as strip_tags and htmlspecialchars ).
ngkongs at gmail dot com ¶
6 years ago
to replace all linebreaks to <br />
the best solution (IMO) is:
<?php
function nl2br2($string) {
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string);
return $string;
}
?>
because each OS have different ASCII chars for linebreak:
windows = \r\n
unix = \n
mac = \r
works perfect for me
Anders Norrbring ¶
7 years ago
Seeing all these suggestions on a br2nl function, I can also see that neither would work with a sloppy written html line break.. Users can't be trusted to write good code, we know that, and mixing case isn't too uncommon.
I think this little snippet would do most tricks, both XHTML style and HTML, even mixed case like <Br> <bR /> and even <br > or <br />.
<?php
function br2nl($text)
{
return preg_replace('/<br\\s*?\/??>/i', '', $text);
}
?>
N/A ¶
4 years ago
Here's a more simple one:
<?php
/**
* Convert BR tags to nl
*
* @param string The string to convert
* @return string The converted string
*/
function br2nl($string)
{
return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}
?>
Enjoy
Joshua Anderson ¶
3 years ago
This function will change new lines (line breaks) to <br/> and it allows you to limit the amount of brs allowed at any point in time.
This function was made to avoid people spaming a textarea with hundreds of line breaks or empty lines.
<?php
function nl2br_limit($string, $num){
$dirty = preg_replace('/\r/', '', $string);
$clean = preg_replace('/\n{4,}/', str_repeat('<br/>', $num), preg_replace('/\r/', '', $dirty));
return nl2br($clean);
}
echo nl2br_limit($string,'4');
?>
// Heres how it works //
nl2br_limit($string, $num)
// $string is the entered text you want to strip lines out of, it could be ($_POST['myinput'])
// $num is the amount of consecutive <br/>'s that are allowed any at a time.
The user is allowed to enter as many line breaks as $num allows
hyponiq at gmail dot com ¶
5 years ago
On the contrary, <b>mark at dreamjunky.comno-spam</b>, this function is rightfully named. Allow me to explain. Although it does re-add the line break, it does so in an attempt to stay standards-compliant with the W3C recommendations for code format.
According to said recommendations, a new line character must follow a line break tag. In this situation, the new line is not removed, but a break tag is added for proper browser display where a paragraph isn't necessary or wanted.
CGameProgrammer at gmail dot com ¶
8 years ago
It's important to remember that this function does NOT replace newlines with <br> tags. Rather, it inserts a <br> tag before each newline, but it still preserves the newlines themselves! This caused problems for me regarding a function I was writing -- I forgot the newlines were still being preserved.
If you don't want newlines, do:
<?php
$Result = str_replace( "\n", '<br />', $Text );
?>
mail at fort-hub dot com ¶
2 years ago
I noticed that I am using an earlier version of PHP which does not recognise the $xhtml parameter in nl2br(), therefore I am stuck with xhtml line breaks, which I do not want. Thus I made the following simple function:
<?php
function NlToBr($inString)
{
return preg_replace("%\n%", "<br>", $inString);
}
?>
