Foros del Web » Programando para Internet » PHP »

Saber formato de una cadena

Estas en el tema de Saber formato de una cadena en el foro de PHP en Foros del Web. Buenas, Sabeis cual es (si existe) la funcion para saber el tipo de formato (utf8, utt7, base64... etc) de una cadena? He "pateado" php.net pero ...
  #1 (permalink)  
Antiguo 06/09/2006, 09:13
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 19 años, 3 meses
Puntos: 0
Saber formato de una cadena

Buenas,

Sabeis cual es (si existe) la funcion para saber el tipo de formato (utf8, utt7, base64... etc) de una cadena?

He "pateado" php.net pero no encuentro nada...

Un saludo, Gracias!
__________________
Casa Rural en Sanabria
  #2 (permalink)  
Antiguo 06/09/2006, 09:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En general una "cadena" cualquiera puede tener un "patrón" dado .. así que usando "Expresiones regulares" con el patrón correcto podrías decir que tal cadena puede ser de tal formato.

Por otro lado PHP implementa (con la extensión correspondiente instalada) algo al respecto:

mb_detect_encoding()
http://php.morva.net/manual/en/funct...t-encoding.php

Por lo menos para UTF8 te puede servir .. y si no quieres usar esa extensión puedes recurrir a las alternativas que los mismos usuarios de php.net en esa función (al pié de la misma descripción de esas funciones) indican.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/09/2006, 02:09
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 19 años, 3 meses
Puntos: 0
Cita:
Iniciado por Cluster Ver Mensaje
En general una "cadena" cualquiera puede tener un "patrón" dado .. así que usando "Expresiones regulares" con el patrón correcto podrías decir que tal cadena puede ser de tal formato.


No entiendo muy bien lo que quieres decir con eso...



¿Te refieres a decodificar directamente y luego ver si la cadena a cambiado o algo parecido?
__________________
Casa Rural en Sanabria
  #4 (permalink)  
Antiguo 07/09/2006, 05:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ToFuS Ver Mensaje


No entiendo muy bien lo que quieres decir con eso...



¿Te refieres a decodificar directamente y luego ver si la cadena a cambiado o algo parecido?
No ...

Me refiero a .. que una cadena puede complir un patrón (por muy complicado que sea este) .. algo tipo:

989asdf89adsf98df

Esa cadena (por decir algo .. ) compliría el patrón de "tantos caracteres de largo fijo" .. que se compone de números y/o letras (de la A a la Z) ..

Las "codificaciones" que mencionas en su base cumplen cierto algorítmo .. pero a su vez como resultado final generan cierto patrón que podría identificar su formato (no exacto pero bastante aproximado).

Un ejemplo real:

Código PHP:
<?php

function detectUTF8($string)
{
       return 
preg_match('%(?:
       [\xC2-\xDF][\x80-\xBF]        # non-overlong 2-byte
       |\xE0[\xA0-\xBF][\x80-\xBF]              # excluding overlongs
       |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}      # straight 3-byte
       |\xED[\x80-\x9F][\x80-\xBF]              # excluding surrogates
       |\xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3
       |[\xF1-\xF3][\x80-\xBF]{3}                  # planes 4-15
       |\xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16
       )+%xs'
$string);
}

?>
Ahí se identifica si tu cadena podría ser codificada como UT8 .. se aplicar el "patrón" y se vé si se cumple ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 08/09/2006, 04:30
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 19 años, 3 meses
Puntos: 0
OK, ahora te entendi.

Pero lo veo un tanto "inseguro" y bastante tedioso.

De todas maneras es una gran idea Cluster. Yo de momento he conseguido arreglarlo con otro pequeña "ñapa".

Como siempre, Muchas Gracias Cluster!!
__________________
Casa Rural en Sanabria
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 14:17.