Foros del Web » Programando para Internet » PHP »

nl2br

Estas en el tema de nl2br en el foro de PHP en Foros del Web. Según la función "nl2br", algo como esto: Código PHP: "Ho la"  Quedaría así: Código PHP: "Ho<br /> la"  ¿Hay alguna manera de que me lo deje ...
  #1 (permalink)  
Antiguo 06/09/2006, 22:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
nl2br

Según la función "nl2br", algo como esto:

Código PHP:
"Ho
la" 
Quedaría así:

Código PHP:
"Ho<br />
la" 
¿Hay alguna manera de que me lo deje sin el salto de línea?

Es decir, así:

Código PHP:
"Ho<br />la"
Por cierto, ¿hay alguna función que haga lo que el nl2br pero al revés?

Espero que podáis responderme a la mayor brevedad posible.

Muchas gracias. :)

Última edición por Dahn II; 24/09/2006 a las 11:45
  #2 (permalink)  
Antiguo 06/09/2006, 22:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Sí, puedes usar str_replace().

Por ejemplo

Código PHP:
$txt "Texto
con 

saltos"
;
$txt str_replace("\n","",nl2br($txt));
// Ahora $txt vale 'Texto<br />con<br /><br />saltos' 
Aunque tal vez sea una tontería pudiendo usar directamente str_replace("\n", "<br />", $txt)
  #3 (permalink)  
Antiguo 06/09/2006, 22:38
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
En cuanto a la pregunta de la función inversa, creo que no existe una br2nl() pero siempre tenemos el recurso de la más genérica str_replace(). Te la puedes montar fácilmente así:

function br2nl($str) {
return str_replace("<br />","",$str);
}
  #4 (permalink)  
Antiguo 06/09/2006, 22:56
 
Fecha de Ingreso: septiembre-2006
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Nada, he puesto esto:

Código PHP:
$textonot str_replace("\n""<br />"$textonot); 
Y al escribir lo siguiente:

Código PHP:
"1
2" 
Me almacena esto:

Código PHP:
"1
<br />2" 
También he probado la otra manera, obteniéndo los mismos resultados.

¿Alguna idea más...?

Gracias por responder.

Última edición por Dahn II; 24/09/2006 a las 11:44
  #5 (permalink)  
Antiguo 06/09/2006, 23:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Lo he probado y a mí sí me funciona. Tal vez se deba al formato de windows del salto de línea, puesto que usa \r\n en lugar del \n. Quiero decir que pruebes de poner \r\n donde está \n
  #6 (permalink)  
Antiguo 06/09/2006, 23:27
 
Fecha de Ingreso: septiembre-2006
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
JUAS, ahora sí. Era justo eso. :D

De todas maneras, si cambio mi página a un servidor Linux, ¿tendría que volver a poner solamente "/n"?
  #7 (permalink)  
Antiguo 06/09/2006, 23:27
 
Fecha de Ingreso: octubre-2004
Mensajes: 128
Antigüedad: 19 años, 6 meses
Puntos: 2
la palabra que contiene los saltos de linea proviene de un formulario, un textarea verdad.

Si es el caso otro codigo quedaria asi

Código PHP:
$find $_POST['palabra']; // ESTA ES LA PALABRA QUE CONTIENE SALTOS DE LINEA
$cad1 explode("\n",$find);

for(
$i=0;$i<count($cad1);$i++){
    if(
$i<count($cad1)-1)
        echo 
trim($cad1[$i])."<br/>";
    else
        echo 
trim($cad1[$i]);

  #8 (permalink)  
Antiguo 06/09/2006, 23:44
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Sí porque en sistemas linux se usa el \n únicamente por lo que \r\n no sería encontrado por str_replace() y no realizaría el reemplazo. Lo que puedes hacer es montarte una función que haga ambos reemplazos o que tenga en cuenta el SO para hacer una cosa u otra y así no tienes siempre que estar cambiando esto.

Código PHP:
function My_nl2br($str) {
 
// Primero siempre el \r\n 
 
return str_replace("\n","<br />"str_replace("\r\n""<br />"$str));

  #9 (permalink)  
Antiguo 07/09/2006, 21:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 40
Antigüedad: 17 años, 7 meses
Puntos: 0
Gracias a todos, me han servido de mucho vuestras respuestas. ;)

Última edición por Dahn II; 24/09/2006 a las 11:44
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:12.