Tema: FAQ's de PHP
Ver Mensaje Individual
  #200 (permalink)  
Antiguo 11/09/2008, 11:23
Nathan_1979
 
Fecha de Ingreso: mayo-2007
Mensajes: 348
Antigüedad: 17 años
Puntos: 9
De acuerdo How to: Función que pone etiquetas <p> parrafos en un textarea :)

Tema: Poner etiquetas <p> en un textarea
Pregunta: Como agregar tags <p> en lugar de <br />
Respuesta:

Ante todo decir que es muy sencillo ahora que lo pienso pero bueno para que esté en el foro y le pueda ayudar al alguien que al igual que yo esta haciendo un sistema de comentarios o cualquier otro proyecto y le fallaba el tema de los párrafos

Me puse la pilas ya hace tiempo con PHP, y viendo que en ningún lado no hay nada de cómo hacer que se respeten las etiquetas

Código HTML:
<p>Un párrafo</p> 

en un textarea ( Bueno simplemente con la función
Código PHP:
nl2br 
pero no es suficiente ya que no es limpia del todo, deja el texto flotando en el HTML

Me animé a realizar una función que con ayuda del nl2br que remplaza las nuevas linea

Código PHP:

y te las remplaza por
Código HTML:
<br /> 

Ahora que lo pienso se podia a ver realizado con replace o una variante.

Ok, empecemos!


Código PHP:
function crear_parrafos($comentario
{
    
$comentario=nl2br($comentario);
    
$comentario=explode('<br />'$comentario);
    
    
$comentario=implode("</p><p>"$comentario);
    
return 
$comentario;
}

$nick=$_POST['nick'];
$comentario=crear_parrafos($_POST['comentario']);


echo 
$nick."<br />";
echo 
"<p>".$comentario."</p>"
Antes de todo el formulario HTML
Código HTML:
<form action="#"" method="post" >

	<label for="nick">Nombre: *</label> <input type="text" id="nick" name="nick" />
        <label for="comentario">Comentario: *</label><textarea  id="comentario" cols="4" rows="10" name="comentario"></textarea>
	<input type="submit" value="Enviar" />
</form> 
Le pasamos 2 arrays
  1. $_POST['nick']
  2. $_POST['comentario']

Como vereis la función se llama crear_parrafos() que le paso un argumento que seria el array del POST del textarea, nos ayudamos de la función nl2br para saber donde están los saltos de linea, seguidamente empleamos la función explode que convierte todo el comentario en un array separando cada elemento del array a traves de <br />
Código HTML:
Primera linea usando la función nl2br para que muestren los saltos de linea y seguidamente explode para que nos convierta en un array, primera linea
<br />
Segundo linea, segunda linea
Ahora podriamos hacer $comentario[0] que nos mostraria:

"Primera linea usando la función nl2br para que muestren los saltos de linea y
seguidamente explode para que nos convierta en un array, primera linea"

ahora usamos la funcion implode que lo que hace es convertir nuestro array en una cadena pero con todos los elementos que tiene el array uniendolos con una cadena (En este caso lo uniremos con las etiquetas </p><p> .


Y a la hora de mostrarlo pondremos las etiquetas <p> de inicio que no realiza implode y la etiqueta </p> del parrafo ultimo del final.


Espero que os sea de utilidad.
Salu2!

Última edición por GatorV; 11/09/2008 a las 13:11