Foros del Web » Programando para Internet » PHP »

capturar n saltos de linea

Estas en el tema de capturar n saltos de linea en el foro de PHP en Foros del Web. Hola. Este es micode: Código PHP: $k = '[B]test[/B]' ; $k = preg_replace ( '/\[B](.*(\n)*)\[\/B]/' , "<strong>$1</strong>" , $k ); echo  $k ;  y trabaja ...
  #1 (permalink)  
Antiguo 08/10/2011, 07:14
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 10 meses
Puntos: 22
capturar n saltos de linea

Hola.

Este es micode:
Código PHP:
$k='[B]test[/B]';
$k=preg_replace('/\[B](.*(\n)*)\[\/B]/',"<strong>$1</strong>",$k);
echo 
$k
y trabaja de maravilla CON ESE strong.

Pero en este falla:

Código PHP:
$k='[B]test
test
test[/B]'
;
$k=preg_replace('/\[B](.*(\n)*)\[\/B]/',"<strong>$1</strong>",$k);
echo 
$k
Cómo le hago...
  #2 (permalink)  
Antiguo 08/10/2011, 07:22
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: capturar n saltos de linea

Te recomiendo que estudies etiquetas HTML ( en un par de horas lo aprendes)
si no mal interpreto lo que queres hacer es esto:

Código PHP:

$k
='[B]test </ br>\n
test </ b>\n
test[/B]'

$k=preg_replace('/\[B](.*(\n)*)\[\/B]/',"<strong>$1</strong>",$k); 
echo 
$k
Saludos
__________________
Mono programando!
twitter.com/eguimariano
  #3 (permalink)  
Antiguo 08/10/2011, 07:51
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 9 meses
Puntos: 14
Respuesta: capturar n saltos de linea

Las etiquetas que se cierran a sí mismas lo hacen al final, es decir, es <br />. Ese </ b> supongo que pretendía ser un <br /> también.

Otra opción es usar directamente la función nl2br.
  #4 (permalink)  
Antiguo 08/10/2011, 08:56
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: capturar n saltos de linea

No es un problema de HTML, es un problema de expresión regular... Que pena con los 2.

Simplemente tienes que colocar la letra s, en tu expresión regular, que significa capturar todo (incluyendo nueva línea). Quedaría así:

Código PHP:
Ver original
  1. <?php
  2. $k='[B]test[/B]';
  3. $k=preg_replace('@\[B\](.*(\n)*)\[/B\]@s',"<strong>$1</strong>",$k);
  4. echo $k;

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 08/10/2011, 11:28
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 10 meses
Puntos: 22
Respuesta: capturar n saltos de linea

Hola andres

Efectivamente funcionó excelente al agregar s al final.

:)

Gracias !
  #6 (permalink)  
Antiguo 08/10/2011, 15:51
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 10 meses
Puntos: 89
Respuesta: capturar n saltos de linea

Cita:
Iniciado por andresdzphp Ver Mensaje
No es un problema de HTML, es un problema de expresión regular... Que pena con los 2.

Simplemente tienes que colocar la letra s, en tu expresión regular, que significa capturar todo (incluyendo nueva línea). Quedaría así:

Código PHP:
Ver original
  1. <?php
  2. $k='[B]test[/B]';
  3. $k=preg_replace('@\[B\](.*(\n)*)\[/B\]@s',"<strong>$1</strong>",$k);
  4. echo $k;

Saludos.
entonces no entendi :S estudiare preg_replace()
__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 09/10/2011, 11:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 10 meses
Puntos: 22
Respuesta: capturar n saltos de linea

Andres,

de donde tomaste la idea de las arrobas (@), cómo se utilizan ?
  #8 (permalink)  
Antiguo 09/10/2011, 11:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: capturar n saltos de linea

Es simplemente un delimitador más, te interesaría leer esto:

Sintaxis de expresiones regulares de PCRE - Delimitadores

[APORTE] Expresiones PCRE

PD: Si usas el delimitador en tu expresión regular debes escaparlo, por eso es bueno a veces jugar con otros distintos / # @ % ~ etc...
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 09/10/2011, 11:46
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 10 meses
Puntos: 22
Respuesta: capturar n saltos de linea

carambas Andres...

Yo SIEMPRE he utilizado únicamente / EXPR /

No sabia que ESO puede sustituirse con @,#...
  #10 (permalink)  
Antiguo 09/10/2011, 11:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: capturar n saltos de linea

Cita:
Según el manual... Cuando se usan funciones PCRE, se requiere que el patrón esté encerrado entre delimitadores. Un delimitador puede ser cualquier carácter no alfanumérico, que no sea una barra invertida, y que no sea un espacio en blanco.
Por ejemplo si usas el slash (/) en esta expresión

/http:\/\//

tendrías que escapar cada uno de los slash, y en esta no:

#http://#

Cita:
Si el delimitador aparece a menudo dentro del patrón, es una buena idea escoger otro delimitador para aumentar la legibilidad.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: saltos
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.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:22.