Foros del Web » Programando para Internet » PHP »

Problemas con substr y algunos caracteres

Estas en el tema de Problemas con substr y algunos caracteres en el foro de PHP en Foros del Web. Estoy haciendo un diccionario alfabético que tome el primer caracter del título e ingrese un caracter limpio en la BD. Ésto es lo que he ...
  #1 (permalink)  
Antiguo 22/03/2010, 13:10
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Problemas con substr y algunos caracteres

Estoy haciendo un diccionario alfabético que tome el primer caracter del título e ingrese un caracter limpio en la BD. Ésto es lo que he hecho hasta el momento:

Código PHP:
$reemplazos = array( 'Š'=>'S' 'Ž'=>'Z' 'Č'=>'C' 'À'=>'A' 'Á'=>'A' 'Â'=>'A' 'Ã'=>'A' 'Ä'=>'A' 'Å'=>'A' 'È'=>'E' 'É'=>'E' 'Ê'=>'E' 'Ë'=>'E' 'Ì'=>'I' 'Í'=>'I' 'Î'=>'I' 'Ï'=>'I' 'Ò'=>'O' 'Ó'=>'O' 'Ô'=>'O' 'Õ'=>'O' 'Ö'=>'O' 'Ù'=>'U' 'Ú'=>'U' 'Û'=>'U' 'Ü'=>'U' 'Ý'=>'Y' 'š'=>'s' 'ž'=>'z' 'č'=>'c' 'à'=>'a' 'á'=>'a' 'â'=>'a' 'ã'=>'a' 'ä'=>'a' 'å'=>'a' 'è'=>'e' 'é'=>'e' 'ê'=>'e' 'ë'=>'e' 'ì'=>'i' 'í'=>'i' 'î'=>'i' 'ï'=>'i' 'ò'=>'o' 'ó'=>'o' 'ô'=>'o' 'õ'=>'o' 'ö'=>'o' 'ù'=>'u' 'ú'=>'u' 'û'=>'u' 'ü'=>'u' 'ý'=>'y''1'=>'#''2'=>'#''3'=>'#''4'=>'#''5'=>'#''6'=>'#''7'=>'#''8'=>'#''9'=>'#''0'=>'#', );

$ttp_alfa strtr($_POST['ttp_texto'] , $reemplazos);
$ttp_alfa strtoupper($ttp_alfa);
$ttp_alfa substr($ttp_alfa01); 
Hasta ahí funciona todo bien: limpia la frase, toma el primer caracter, lo convierte a mayúsculas y lo manda a la BD sin problemas. El lío surge cuando la frase comienza por caracteres como "? , ¡ , @ , - , _ , % , | " o cualquier otro que no sea alfanumérico, el cual quiero eliminar para continuar con el primero que cumpla con el requisito (letras o números).

Lo único que quiero hacer es decirle a PHP "si éste caracter no pertenece a $reemplazos (el array de arriba), continúa buscando en la línea hasta que encuentres el primero". ¿Cómo le hago?.

Por ejemplo, si el usuario ingresa la frase "¡¡¡¡Holaaaa!!!" el script debería ingresar "H" en la base de datos.
  #2 (permalink)  
Antiguo 22/03/2010, 13:15
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problemas con substr y algunos caracteres

en realidad no es muy dificil

para empezar necesitas la lista de permitidos que en tu caso es $reemplazos, y de ahi necesitas los key.. entonces ? para tomarlos
Código PHP:
Ver original
  1. $permitidos = implode("", array_keys($reemplazos)); // editado por que estaba haciendo algo demas

luego necesitas una expresion regular que elimine todo lo que no sea alfanumerico ni los permitidos del inicio

seria algo como

Código PHP:
Ver original
  1. $texto = preg_replace('/^([^a-z0-9'.$permitidos.']+)/i', '', $texto);

y creo que con eso ya estarias..

prueba y me comentas

saludos!
__________________
More about me...
~ @rhyudek1
~ Github

Última edición por Hidek1; 22/03/2010 a las 14:08
  #3 (permalink)  
Antiguo 22/03/2010, 13:23
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problemas con substr y algunos caracteres

edito.. el bucle no es necesario..

basta con que pongas

Código PHP:
Ver original
  1. $permitidos = implode("", array_keys($reemplazos));
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 22/03/2010, 15:10
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: Problemas con substr y algunos caracteres

Hola Hidek1,

Muchas gracias hermano. Te comento que todo funcionó perfectamente , sólo hice una ligeras variaciones y listo.

Un detalle muy curioso lo representó el hecho de que el signo de exclamación de apertura "¡" no se comportaba igual que el resto, es decir, se ingresaba un valor vacío en lugar del caracter alfanumérico. Hasta el momento probé con un montón de caracteres inválidos y este símbolo es el único que se comporta así. como solución temporal le apliqué un str_replace directo desde la salida del formulario. El asunto quedó así:

Código PHP:
$reemplazos = array(...);
$permitidos implode'' array_keys($reemplazos) );
$texto str_replace('¡' '' $_POST['ttp_texto']); // <-- temporal
$txt preg_replace('/([^a-z0-9'$permitidos .']+)/'''$texto);
$ttp_alfa strtr($txt $reemplazos);
$ttp_alfa strtoupper($ttp_alfa);
$ttp_alfa substr($ttp_alfa01); 
  #5 (permalink)  
Antiguo 22/03/2010, 15:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 2 meses
Puntos: 334
Respuesta: Problemas con substr y algunos caracteres

eso es por la codificacion de los caracteres... puedes hacer una prueba con

Código PHP:
Ver original
  1. <?php
  2. echo "¡";
  3. echo utf8_encode("¡");
  4. ?>

que bueno q sirviera la ayuda

saludos!
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: caracteres, substr
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 06:35.