PDA

Ver la Versión Completa : Eliminar codigo HTML de un foro


xtreme
14-10-2007, 00:14:35
Tengo un foro en http://www.juegos-mas.co.nr (http://www.juegos-mas.co.nr/) y quiero que cuando los usuarios creen una respuesta, se hagan los siguientes cambios, para que no se acepte el codigo HTML. Uso PHP.
'<' por '&lt;'
'>' por '&gt;'
'&' por '&amp;'
Hasta ahora, he usado la función str_replace() para hacer eso, pero tengo un ultimo problema.
Luego de usar la str_replace() uso la funcion nl2br() y ahi es cuando todo se daña. este es mi codigo:
$ans5=eregi_replace(" "," ",$r['respuesta']);
$ans4=eregi_replace("\"","&quot;",$ans5);
$ans3=eregi_replace("<","&lt;",$ans4);
$ans2=eregi_replace(">","&gt;",$ans3);
$ans1=eregi_replace("'","&quot;",$ans2);
$ans0=eregi_replace("&lt;br /&gt;","<br/>",$ans1);
$ans=nl2br($ans0);
Les agredezco no me respondan con algo como 'consigue php-bb' pues quiero hacer todo el codigo yo.
Espero me puedan ayudar. gracias.

seoane
14-10-2007, 00:54:57
Y por que no usas la función htmlspecialchars, que según creo se diseño para hacer lo que tu quieres.

http://es.php.net/manual/es/function.htmlspecialchars.php

xtreme
14-10-2007, 22:09:17
Muchas gracias, no conocía esa función. Sirve mucho, pero me dejo con un pequeño problema: los caracteres de nueva linea (\n) me los cambia por <br/> (hasta ahí todo bien), pero luego, en lugar de insertar el espacio me cambia ese <br/> por &lt;br/&gt;

Bueno... al fin y al cabo encontré en la misma pagina otra función, y combine dos para lograr lo que quería. así quedo el código:
$cambiar=array("<",">",'"',"'");
$reemplazos=array("&lt;","&gt;","&quot;","'");
$ans=nl2br(str_replace($cambiar,$reemplazos,$r['respuesta']));

Igual, gracias por tu ayuda, sin esa pagina no hubiera podido hacerlo.