Foros del Web » Programando para Internet » PHP »

permitir saltos de línea con preg_match

Estas en el tema de permitir saltos de línea con preg_match en el foro de PHP en Foros del Web. Hola muy buenas a todos! Tengo una duda a la hora de usar la función preg_match de php. Quiero validar un textárea que permita saltos ...
  #1 (permalink)  
Antiguo 03/02/2011, 15:17
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
permitir saltos de línea con preg_match

Hola muy buenas a todos!

Tengo una duda a la hora de usar la función preg_match de php.

Quiero validar un textárea que permita saltos de línea.
Si escribo:
Código PHP:
.. 
if(
preg_match("/^([a-z0-9 _;,:]){2,}/i",$textarea)) 

.. 
deja hacer los saltos de línea pero también permite incluir caracteres que no querría( al final de las líneas).
Si añado "$" antes de "i", no permite otros caracteres pero tampoco permite los saltos de línea.
He leído por ahí que "\n" permite hacer saltos de línea, pero lo he probado y no lo hace.

¿Cómo se podría resolver esto?
Muchas gracias de antemano ante cualquier ayuda!
Saludos
  #2 (permalink)  
Antiguo 03/02/2011, 20:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: permitir saltos de línea con preg_match

Tengo poca practica con expresiones regulares, pero, creo que necesitarias escapar la diagonal invertida para que funcione... es decir, en lugar de poner solo \n tendria que ser \\n

Prueba, si funciona... genial!!! si no, esperaremos que alguno de los expertos en el tema se pase por aqui.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/02/2011, 06:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: permitir saltos de línea con preg_match

Gracias Triby por tu respuesta!

He probado con lo que me dices pero sigue igual, no acepta los saltos de línea.
Encima, cuando quito la $ final para que me los acepte, una vez que los inserto con mysql en una tabla, al recoger el texto me lo devuelve sin saltos de línea, lo cual tampoco entiendo ya que los inserto en un campo text que se supone que acepta los saltos de línea(eso creo yo).

Saludos

p.s. Bueno, para mantener los saltos de línea al insertar el texto hay funciones para ello, no hay problema con esto..( aunque creía que con el campo text no hacía falta utilizar dichas funciones).:)

Última edición por breaststroke; 04/02/2011 a las 08:56
  #4 (permalink)  
Antiguo 04/02/2011, 15:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: permitir saltos de línea con preg_match

Puedes guardar sin problemas los saltos de linea en un campo de texto (tambien debe poderse en char y varchar, no he probado porque no le veo sentido), aqui la cuestion es que quieres verificarlo con una expresion regular.

Cuando hayas solventado ese punto, recuerda que en HTML un salto de linea equivale a un espacio y si queres mostrarlos, entonces debes usar <br /> y la forma facil es usando nl2br()

Nota, tambien otros caracteres no imprimibles (como tabulador y retorno de carro) son considerados como espacios en HTML y, no importa si tienes uno o muchos continuos, en la pagina se mostraran como uno solo, a menos que los reemplaces por su correspondiente entidad html o sean parte de un texto preformateado <pre> </pre>
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 04/02/2011, 17:28
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: permitir saltos de línea con preg_match

Gracias de nuevo Triby.

Bueno, la verdad es que me he confundido un poco porque creía que hasta ahora estaba recogiendo texto desde text con los saltos de línea incluídos. Supongo que habrá sido un espejismo:P, porque ahora me he visto obligado a usar esa función que mencionas(nl2br) y que he visto aquí en estos foros.
Entonces, el problema que tengo ahora es el poder validar textos con saltos de línea, pero cerrando con $ en preg_match.
Voy a mirar también un poco más lo de <pre>, que por lo que cuentas me puede interesar también.
Gracias de nuevo, un saludo.
  #6 (permalink)  
Antiguo 13/02/2011, 19:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: permitir saltos de línea con preg_match

buenas...

en los <textarea> no hace falta transcribir el salto de linea con alguna funcion. en el tema de la expresion regular has olvidado un detalle. hay navegadores o aplicaciones que utilizan dos valores para representar el salto de linea: line feed e new line. o sea, debes agregar \r y \n a la expresion.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 14/02/2011, 06:49
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: permitir saltos de línea con preg_match

Buenas zerokilled.

Creo que debo seguir analizando la función preg-match.
Entiendo lo que me dices,pero aún así en la expresión que yo escribo:
..
if(preg_match("/^([a-z0-9 _;,:]){2,}/i",$textarea))
{

, como decía, si la cierro con $, antes de "i", no me acepta los cambios de línea, pero por lo que veo no me acepta ni una palabra normal como por ejemplo:"carabinero", sin ni siquiera hacer saltos de línea.
Así que supongo que estoy escribiendo mal la función.

gracias y Saludos

Última edición por breaststroke; 14/02/2011 a las 07:44
  #8 (permalink)  
Antiguo 14/02/2011, 09:05
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: permitir saltos de línea con preg_match

hola de nuevo,

Puede que me diera error por meter todo entre paréntesis( ).
Ahora , sin ellos, voy consiguiendo lo que busco.
Bueno voy a seguir en ello, hasta que lo tenga bien claro..
  #9 (permalink)  
Antiguo 14/02/2011, 09:14
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: permitir saltos de línea con preg_match

Código PHP:
if(preg_match('/^([a-z0-9\s_;,:]){2,}$/i'$textarea)) 
  #10 (permalink)  
Antiguo 10/03/2011, 02:19
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 2 meses
Puntos: 5
Respuesta: permitir saltos de línea con preg_match

funciono \s!

Etiquetas: permitir, 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




La zona horaria es GMT -6. Ahora son las 06:31.