Foros del Web » Programando para Internet » PHP »

formatear lo que el usuario tipea en un textarea.

Estas en el tema de formatear lo que el usuario tipea en un textarea. en el foro de PHP en Foros del Web. hola, sabemos que los usuarios no le prestan demaciada atención a la hora de escribir o de pegar textos en un textarea. pues lo que ...
  #1 (permalink)  
Antiguo 12/07/2006, 15:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
formatear lo que el usuario tipea en un textarea.

hola, sabemos que los usuarios no le prestan demaciada atención a la hora de escribir o de pegar textos en un textarea.
pues lo que quiero lograr es dejar un "texto limpio" independientemente de lo que el usuario haya colocado allí.

¿Qué es todos lo que debo tener en cuenta pra lograrlo adem´s de lo siguiente?

1- eliminar las posibles cosas que existan al inicio o al final de la cadena (lo logro con trim)
2- reemplazar más de 2 (sin importar cuantos sean) \r\n por sólo 2 de ellos (esto no lo se hacer)

Voy así, pero no sé como hacer el punto 2:
$cadena = trim($cadena);
$cadena = str_replace("más de 2 \r\n", "\r\n\r\n", $cadena);

Gracias
__________________
...___...
  #2 (permalink)  
Antiguo 12/07/2006, 16:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Hola Al Zuwaga (al verte por aquí creía que estaba en el foro ASP, buff que mal sueño xDDDDD)

Al grano,
mm Los dobles espacios también podrías consideralos.

También podrías usar expresiones regulares para cotar casi todo eso de raiz (no las domino mucho .. pero evaluando que deseas permitir .. permites eso y el resto lo deniegas).

Podrías usarlas con funciones como:
ereg_replace()

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/07/2006, 16:03
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
podés hacerlo :
1.- con expresiones regulares
creo que algo como
Código PHP:
ereg_replace("(\r\n){3,}""\r\n\r\n"$cadena
debería funcionar. (no lo garantizo dada mi nula experiencia con expresiones regulares)

2.- Haciéndolo recursivamente

mientras(encuentre más de 3 \r\n juntos) entonces
sustituir los 3 por 2

Si en algún caso encontrás 5, por ejemplo, en la primera pasada del bucle te quedan en 4 (sustituyo los 3 encontrados primero por 2), en la segunda 3, y en la tercera pasada te quedan 2. Obviamente las expresiones regulares son más eficientes.


Saludos.
  #4 (permalink)  
Antiguo 12/07/2006, 16:09
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
gracias a ambos, lo pruebo y les comento.
tamnbiñen gracias por el doble espacio, no lo tuve en cuenta.
__________________
...___...
  #5 (permalink)  
Antiguo 12/07/2006, 19:41
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Bueno, me quedó así:

Código:
<?
$cadena = "
  había un enter y dos espacios antes de            este párrafo

en este había dos enters antes




acá había 5 enters antes.
acá hay sólo 1 y 3 espacios al final y luego un enter   
";

$cadena = trim($cadena);
$cadena = ereg_replace("( ){2,}", " ", $cadena);
$cadena = ereg_replace("(\r\n){3,}", "\r\n\r\n", $cadena);
$cadena = "<p>" . ereg_replace("(\r\n){2,}", "</p><p>", $cadena) . "</p>";
$cadena = ereg_replace("(\r\n)", "<br />\r\n", $cadena);
$cadena = ereg_replace("</p><p>", "</p>\r\n<p>", $cadena);

echo "<textarea cols=\"100\" rows=\"20\">$cadena</textarea>";
?>


Seguramente es mejorable, pero soy nuevito en PHP :)

Gracias y saludos
__________________
...___...
  #6 (permalink)  
Antiguo 13/07/2006, 06:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Seguramente es mejorable, pero soy nuevito en PHP :)
mm Pero lo que usastes son "Expresiones regulares" .. Es decir, el tema concreto de expresiones regulares no es própio de PHP (vienen de Perl si no me equivoco) y la mayoría de lenguajes las pueden "usar" (ASP también supongo no?).

(Esto es sólo una aclaración, no tanto para tí Al Zuwaga sino para alguien que se encuentre en el mismo problema .. En resumen .. que la la "solución" está en un buen manejo de expresiones regulares para tratar "cadenas" ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 15:10.