Foros del Web » Programando para Internet » PHP »

Reemplazar acentos con Funcion PHP - No funciona correctamente

Estas en el tema de Reemplazar acentos con Funcion PHP - No funciona correctamente en el foro de PHP en Foros del Web. Hola Fororeros.. que tal, espero que bien.. una solo consulta Tengo esta funcion: Código PHP: function  reem ( $texto1 ) { //Rememplazamos caracteres especiales latinos minusculas $find  = array( 'á' ,  ...
  #1 (permalink)  
Antiguo 10/10/2010, 20:55
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años
Puntos: 175
Reemplazar acentos con Funcion PHP - No funciona correctamente

Hola Fororeros.. que tal, espero que bien.. una solo consulta

Tengo esta funcion:
Código PHP:
function reem($texto1) {

//Rememplazamos caracteres especiales latinos minusculas
$find = array('á''é''í''ó''ú''ñ''\"''€''ü');
$repl = array('á''é''í''ó''ú''ñ''"''€''ü');
$texto1 str_replace ($find$repl$texto1);


//Rememplazamos caracteres especiales latinos mayusculas
$find = array('Á''É''Í''Ó''Ú''Ñ''Ü''ç''Ç');
$repl = array('Á''É''Í''Ó''Ú''Ñ''Ü''ç''Ç');
$texto1 str_replace ($find$repl$texto1);

return 
$texto1;


Solo quiero que cuando inserto un texto a la Base de datos, ya vayan escapadas como HTML, es decir, que las "á", las reemplace por "á"...

POr algun motivo que desconozco, la misma no surge efecto cuando hago la carga en la BD a traves de mi CMS que cree, es decir, se fijaran que previamente declaro la variable $titulo según lo que traje del FORM, pero quiero que lo traido sea reemplazado por caracteres o entidades HTML como ya expliqué, y lo hago asi...

Código PHP:
if(isset($_POST["btnGuardar"]))     
    {
         
         
    
$titulo reem($_POST['titulo']); //esta linea
    
    
$descripcion reem($_POST['descripcion']); //esta otra
    
    
$publicado $_POST['publicado'];
    
    
$fecha$_POST['fecha'];
        
         

         
//inserto los textos pero no me cambia los acentos por lo que pido
         
$sql "insert into eventos (titulo, descripcion, pub, fecha) 
         values ('"
.$titulo."' ,'".$descripcion."', '".$publicado."', '".$fecha."'";
mysql_query($sql,$conn) or die(mysql_error($conn));


No funciona, me sigue llevando como caracteres extraños. Sin embargo, tengo un comando que permite editar el contenido, con la misma funcion de reem() , que al editar el texto, si me lo trasforma, y es identico a este code, solo que previamente traigo lo preexistente.

Porque podria no estar insertando los textos modificados?
COmo podría hacer para cambiar los acentos por entidades HTML validas segun mi ejemplo?

Gracias, y muy buen inicio de semana
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 10/10/2010, 21:10
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años
Puntos: 175
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Lo siento, se me paso este detalle:

tambien probé con

htmlentities(); pero, como tengo un editor Javascript que fomatea la info, es decir, crea etiquetas tipo parrafo, strong y demas dentro de un campo textarea, tambien los convierte a entidades, y al final resulta mas engorroso, esto que mostré funciona bien pero no al momento de insertarlo por pirmera vez...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 12/10/2010, 17:46
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años
Puntos: 175
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Bueno, lo que ante ayer funcionaba bien, hoy ya no responde.. es decir, esta funcion que subi, no guarda los acentos y caracteres especiales como lo hacia antes.. alguien sabe como guardar los textos de un CMS que inserto a la base de datos, y luego, en la pagina los interprete como caracteres normales, es decir que me lo interprete los acentos correctamente.. no se si se entiende el punto...

No quiero eliminar los acentos, al contrario quiero que al guardar una palabra:

"República" | Me lo guarde como | "República"

al menos es lo que se me ocurre, conocen otra forma de guardar los acentos para que luego los interprete cuando se leen?

Plis!! Help
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #4 (permalink)  
Antiguo 12/10/2010, 18:02
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años
Puntos: 175
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Disulpen la insistencia, aun sigo aguardando una sugerencia mejor..

Aun asi, quiero consultar algo a los expertos:

supongamos que en la variable de entrada a la BD, pongo:

Código PHP:
$titulo htmlentities($_POST['titulo']); 
y luego para leerlo uso

Código PHP:
echo html_entity_decode($row['titulo']); 
* Es correcto hacer esto?
* Qué problemas podría ocasionar?
* Tiene puntos positivo o negativos?

Necesito una voz experta o al menos una opinion al respecto de eso, debido a que si guardo un acento con htmlentities no me lo guarda como

ó... sino que lo guarda como "Ã&sup3 ;"

al recuperarlo con html_entity_decode lo vuelve a transformar a acento, pero no se si tiene aspectos contraproducentes si lo uso en mi CMS.

gracias, espero comentarios al menos, por favor, o sugerencias de como hacer esta labor
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 13/10/2010, 00:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Fijate la codificación de tu archivo PHP y asegurate que sea la misma que tenés configurada en tu base de datos.

Si usás Dreamweaver, podés ver la codificación en Archivo > Propiedades (o) Modificar > Propiedades de la página (según la versión)

A mi me pasó lo mismo hasta que lo cambié a UTF-8

salu2
  #6 (permalink)  
Antiguo 13/10/2010, 06:21
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años
Puntos: 175
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

bueno, en cuanto a la funcion que creé, no se si tiene algo que ver la codificacion, debido a que deberia transformar lo que escribo a una caracter o cadena de caracteres.

es decir, para php, es lo mismo una cadena "á", que una cadena "á", y lo deberia guardar igual.. ahora, si lo va a leer el html es otra cosa, el tema no esta en que no lo interpreta, el tema es que dicha funcion no modifica la cadena pasada, y es muy extraño, porque al principio si lo hacia.

Pero se agradece el aporte y voy a checar tambien eso..

en cuanto a mi consulta sobre htmlentities, que opinan?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 14/12/2010, 17:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Pues bueno no se si te sirva yo cree esta funcion para resolver ese problema

Código PHP:
Ver original
  1. function utf8($a) {
  2. return htmlentities($a,ENT_QUOTES,'UTF-8');  
  3. }

Y despues solo uso en la parte donde se sube a la base de datos asi:

Código PHP:
Ver original
  1. $s="update clasificador set descripcion='".utf8($_POST[descripcion])."' where id_clave='".$_POST[id_clave]."'";

Espero te sea de ayuda o a alguien mas. a se me olvidaba si es necesario imprimir despues desde la base de datos el comando para que el texto no aparezca con las entradas html (á) quedaria asi:

Código PHP:
Ver original
  1. echo html_entity_decode($r[descripcion]);

Eso es todo
  #8 (permalink)  
Antiguo 15/12/2010, 01:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 15 años, 6 meses
Puntos: 406
Respuesta: Reemplazar acentos con Funcion PHP - No funciona correctamente

Tu problema es de CODIFICACION, mientras algún componente no este correctamente configurado tendrás problemas con caracteres especiales o latinos, para resolver esto es necesario que...
  • Guardes el archivo con codificación UTF-8
  • Tu base de datos TIENE que estar codificada en UTF-8
  • Tu código HTML tiene que estar códificado en UTF-8

Si mantienes las cosas como tal no importa como agregues el texto, no necesitas utilizar ni crear funciones para cambiar a entidades html los caracteres especiales, siempre se mostrarán correctamente en el navegador
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: acentos, correctamente, funcion, reemplazar
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 23:45.