Foros del Web » Programando para Internet » PHP »

Censura y campo de texto

Estas en el tema de Censura y campo de texto en el foro de PHP en Foros del Web. Buenas, en un caso normal me habría puesto a aprender por mi cuenta, pero esta vez no puedo así que formularé mi pregunta: Tengo un ...
  #1 (permalink)  
Antiguo 15/04/2007, 07:18
Avatar de NaSeR_TKD  
Fecha de Ingreso: abril-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Censura y campo de texto

Buenas, en un caso normal me habría puesto a aprender por mi cuenta, pero esta vez no puedo así que formularé mi pregunta:

Tengo un campo de texto en una página html de la siguiente manera:
Código:
<form action="hxxp://wwx.x.com/algo.php" method="post">
<textarea cols=100 rows=10 name="Texto">
</textarea>
<BR><BR>
<input type="Submit" value="Censurar"><input type="Reset" value="Borrar"/>
</form> 
Y me gustaría alguna función en php que tomase el texto que he introducido en ese cuadro, sustituyese algunas palabras por otras que haya definido (preferiblemente en un .txt) y te lo devuelva al cuadro de texto aunque ello implique, como supongo, recargar la página. El problema como digo es que no se mucho de php, aunque creo que puede hacerse.
Cualquier ayuda que me podáis prestar será enormemente agradecida.
  #2 (permalink)  
Antiguo 15/04/2007, 07:32
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Censura y campo de texto

pues con str_replace de php(); quedaria algo asi

Código:
<?php
// Incluimos la función para reemplazar el código
function reemplazar( $codigo )
{
$search = array_keys( $GLOBALS['code'] );
$codigo = str_replace( $search, $GLOBALS['code'], $codigo );
return $codigo;
}
?>

ya eso lo puedes poner sobre el <html> de la pagina que recibira el textarea
de forma $textarea = $_POST[Texto];
entonces.... despues reemplazamos lo que queremos de textarea con la funcion reemplazar...

<?php
//generamos el array a cambiar
$code = array(
'lucho' => 'Luchito',
'groseria' => 'Lindura',
'palabra soez' => 'palabra normal'
//el ultimo elemento va sin coma 
);
bueno asi vas cambiando la primera palabra es la que que no quieres que salga la segunda es la que quieres que la cambie por la primera ...

ya para mostrar los datos ocupamos nuestra funcion y listo

<?php
echo ''.reemplazar(nl2br("$textarea")).'';
?>

bueno añadi la funcion nl2br ya que es un textarea y cuando hagan salto con el enter este lo tomara ahora si quieres lo quitas ;) y bueno lo rescato como $textarea ya que arriba lo definimos asi $textarea = $_POST[Texto];


espero te sirva ;) si algo no va me dices
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 15/04/2007, 11:37
Avatar de NaSeR_TKD  
Fecha de Ingreso: abril-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Re: Censura y campo de texto

Muchísimas gracias por la ayuda.
De momento no lo consigo hacer funcionar, pero supongo que es por mi falta de conocimientos. Si veo que no soy capaz de ponerlo en marcha, ya postearé de nuevo para ver qué estoy haciendo mal.
  #4 (permalink)  
Antiguo 15/04/2007, 11:42
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Censura y campo de texto

andales como te lo dejo completo ;)

Código PHP:
<?php
// Incluimos la función para reemplazar el código
function reemplazar$codigo )
{
$search array_keys$GLOBALS['code'] );
$codigo str_replace$search$GLOBALS['code'], $codigo );
return 
$codigo;
}
?>
<html>
<head>
<title>Prueba</title>
</head>
<body>
<br>
<form action="pruebas.php" method="POST"> 
<textarea cols=100 rows=10 name="Texto" /></textarea><br /><br /> 
<input type="submit" value="Censurar"><input type="Reset" value="Borrar"/> </form>
<?php
if ($_POST[Texto] != "")
{
$textarea $_POST[Texto];
//generamos el array a cambiar
$code = array(
'lucho' => 'Luchito',
'groseria' => 'Lindura',
'palabra soez' => 'palabra normal'
//el ultimo elemento va sin coma 
);

echo 
''.reemplazar(nl2br("$textarea")).'';
}
?>
</body>
</html>

solo notar que mi pagina se llama pruebas.php nada mas ;)
y obio te cambiara solo las palabras lucho , groseria y palabra soez, ya si quieres agregar mas las pones recuerda que la ultima no lleva coma ;)

saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 17/04/2007, 09:13
Avatar de NaSeR_TKD  
Fecha de Ingreso: abril-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Re: Censura y campo de texto

Muchísimas gracias, me faltaban por poner unas cosas, no me extraña que no funcionase. Ahora va perfecto.


Si quieres ver cómo ha quedado, puedes verlo en la página que aparece en mi perfil, es el "traductor". De momento he cambiado "str_replace" por "str_ireplace" para que sea insensible a mayúsculas y minúsculas, ahora me queda por ver cómo hacer que la traducción salga en el campo de texto en lugar de debajo de este. Además me he fijado en dos cosas que si bien puede que no sean errores, al tratarse de un "traductor" interfieren en su labor:

-La primera es que si encuentra una palabra que tengas en el array te la cambia aunque esta forme parte de otra palabra.
Por ejemplo "p*ta" te lo sustituiría por "palabra no grosera" aunque esté integrada en otra palabra como por ejemplo "amputar", quedando "ampalabra no groserar".
-Otra cosa que me he fijado es que si para un mismo array pones dos valores, el resultado que obtienes se muestra de forma incorrecta.
Por ejemplo si determino que para "k" te lo sustituya por un "que" y que por "q" también te lo sustituya por un "que", el resultado luego de haber introducido la frase "k tal te va la vida" sería "queeue tal te va la vida" en lugar de "que tal te va la vida".

Me pregunto si se puede hacer algo para solucionarlo, quizás sea algo demasiado complejo para hacerlo con php.

Última edición por NaSeR_TKD; 17/04/2007 a las 09:33
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 17:46.