Foros del Web » Programando para Internet » PHP »

Remplazar letras por un valor

Estas en el tema de Remplazar letras por un valor en el foro de PHP en Foros del Web. Hola amigos, veran les cuento. Acualmente estoy trabajando con un formulario y el problema que tengo recientemente es este. Estoy usando NicEdit (Este JS remplaza ...
  #1 (permalink)  
Antiguo 20/07/2009, 22:24
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Remplazar letras por un valor

Hola amigos, veran les cuento.

Acualmente estoy trabajando con un formulario y el problema que tengo recientemente es este.

Estoy usando NicEdit (Este JS remplaza las textarea por un editor de texto wyswin), mediante el formularo que conteniene el textarea estoyr guardando en una DB lo escrito, el problema que tengo que en la DB me inserta las letras Ñ como ñññ y los acentos como óóó, pero este problema solo ocurre al intentas insertar la letra ñ y acentos en la DB, es decir no ocurre al pasar el texto al PHP.


Entonces me surgio la idea de remplazar las ññññ por &ntilde y los acentos por su correspondiente usando PHP para despues insertar en la DB y de esa manera no tendria problemas al mostrarl o que tenga guardado.


De que forma puedo coger el texto enviado por POST y remplazar las ñ y los á,é,í,ó,ú por su valor en HTML y despues meterlo en un array para insertar posteriormente en la DB.

Muchas gracias amigos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #2 (permalink)  
Antiguo 20/07/2009, 23:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Remplazar letras por un valor

htmlentities.

Saludos

PD ese problema de que te los "reemplaza" es porque el charset de tu tabla es diferente al charset por el que lo estas insertando.
  #3 (permalink)  
Antiguo 20/07/2009, 23:16
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 10 meses
Puntos: 21
Respuesta: Remplazar letras por un valor

¬¬ te voy a tener que responder por tercera vez?...

Código PHP:
$string 'año mes día';

$string htmlentities($string); //Devuelve -> 'año día mes' 

No hay cuarta ehh!
--

...esto me pasa por ser tan activo.

Última edición por bioxido; 20/07/2009 a las 23:24
  #4 (permalink)  
Antiguo 21/07/2009, 01:02
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Remplazar letras por un valor

Hola amigo bioxido, no me funciona de esa forma.

Tengo el charset en uff 8 en la base de datos, el htmlentities no me funciona que puedo hacer?
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #5 (permalink)  
Antiguo 21/07/2009, 01:08
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 10 meses
Puntos: 21
Respuesta: Remplazar letras por un valor

ummm... no etiendo porque no te funciona, deberia de funcionar...no te da algun error? mostrame como lo estas haciendo...

Pone el script completo, aunque sean 899lineas o solo la parte de php...
  #6 (permalink)  
Antiguo 21/07/2009, 01:14
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Remplazar letras por un valor

gracias amigo.

Mira me he creado este pequeño script para probar y observa:

Código PHP:
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
if (isset($_POST['enviar']))
{
$texto 'año mes día';
$var htmlentities($texto); //Devuelve -> 'a&ntilde;o d&iacute;a mes'  
echo $var;
}
?>
</head>

<body>
<form action="" method="post">
<input type="submit" name="enviar" value="ver">
</form>
</body>
</html>
El resultado que me devuelve es:

año mes día

¿Que es lo que estoy haciendo mal?? no entiendo que pueda estar mal =S

Muchas gracias amigo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #7 (permalink)  
Antiguo 21/07/2009, 01:26
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 10 meses
Puntos: 21
Respuesta: Remplazar letras por un valor

cambia:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

por:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


Daah no estoy seguro de si es eso, pero el htmlentities lo estas haciendo bien... si no es eso no se que podria ser... igual a esta hora ya tengo todas las neuronas dormidas...
  #8 (permalink)  
Antiguo 21/07/2009, 01:30
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Remplazar letras por un valor

jejeje amigo, gracias estoy probado en este momento.

Gracias brother y perdona q te estes acabando tus neuronas conmigo XD

En un momento edito, saludos!

_

EDITO: Curioso amigo, curioso, sigue sin mostrarlos como se debe pero ahora muestra algo diferente XD

 año mes día


Huy que podrá ser .... =S
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #9 (permalink)  
Antiguo 21/07/2009, 01:37
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 10 meses
Puntos: 21
Respuesta: Remplazar letras por un valor

hay, no se... pone un head completo..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>titulo</title>
</head>


Y listo, me voy a dormir mañana...en unas horas... te sigo ayudando...
  #10 (permalink)  
Antiguo 21/07/2009, 01:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Remplazar letras por un valor

Para ver si esto te resuelve. Te sugiero primero bajar el programa Notepad++. Luego que lo instales edita con el programa el archivo de PHP. Vas a ir a Format y vas a escoger Encode in UTF-8 without BOM. Corre el codigo y nos dejas saber como te fue. Claro esta, trata de escribir los meta como te dijo bioxido
  #11 (permalink)  
Antiguo 21/07/2009, 02:09
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 1 mes
Puntos: 188
Respuesta: Remplazar letras por un valor

Hola, wow vaya que esto tan sencillo ocaciona varios problemas...

El problema fue de nuestros amigos del php.net, vean la forma correcta para usar el htmlentities es:

Código PHP:
<?
//INICIO DE LA COMPROBACION DE CARACTERES ESPECIALES
    
class unicode_replace_entities {
        public function 
UTF8entities($content="") {
            
$contents $this->unicode_string_to_array($content);
            
$swap "";
            
$iCount count($contents);
            for (
$o=0;$o<$iCount;$o++) {
                
$contents[$o] = $this->unicode_entity_replace($contents[$o]);
                
$swap .= $contents[$o];
            }
            return 
mb_convert_encoding($swap,"UTF-8");
        }

        public function 
unicode_string_to_array$string ) { 
            
$strlen mb_strlen($string);
            while (
$strlen) {
                
$array[] = mb_substr$string01"UTF-8" );
                
$string mb_substr$string1$strlen"UTF-8" );
                
$strlen mb_strlen$string );
            }
            return 
$array;
        }

        public function 
unicode_entity_replace($c) { 
            
$h ord($c{0});   
            if (
$h <= 0x7F) {
                return 
$c;
            } else if (
$h 0xC2) {
                return 
$c;
            }
           
            if (
$h <= 0xDF) {
                
$h = ($h 0x1F) << | (ord($c{1}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            } else if (
$h <= 0xEF) {
                
$h = ($h 0x0F) << 12 | (ord($c{1}) & 0x3F) << | (ord($c{2}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            } else if (
$h <= 0xF4) {
                
$h = ($h 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << | (ord($c{3}) & 0x3F);
                
$h "&#" $h ";";
                return 
$h;
            }
        }
    }
####################### FIN DE LA COMPROBACION de letras especiales
    
$content $_POST['texto'];
    
$oUnicodeReplace = new unicode_replace_entities();
    
$content $oUnicodeReplace->UTF8entities($content);

echo 
$content;
// casi olvido cerrar con ? > jaja
?>
Perdon por no explicar el script pero ya me muero de sueño, ahora si funciona bien y guarda los caracteres como debe de ser en la database =).

P.D: La variable $content esta recibiendo el texto por POST de un campo de formulario llamado "texto"

Saludos! y buenas noches
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
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:26.