Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Fnción "str_split" - Problema con letras con tíldes

Estas en el tema de Fnción "str_split" - Problema con letras con tíldes en el foro de PHP en Foros del Web. Hola amigos. Usando la función " str_split " me ayuda con el 95% de lo que necesito. El problema se da con las letras tildadas. ...
  #1 (permalink)  
Antiguo 21/07/2015, 13:18
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 2 meses
Puntos: 7
Pregunta Fnción "str_split" - Problema con letras con tíldes

Hola amigos.

Usando la función "str_split" me ayuda con el 95% de lo que necesito. El problema se da con las letras tildadas.

Ejemplo:

Código PHP:
Ver original
  1. $resultado = array();
  2. stringOriginal = "á";
  3. $resultado = str_split(stringOriginal);

Para letras tildadas, si hago un print_r(), aparecen el arreglo con dos subíndices.

Array ( [0] => � [1] => � )


Pero si la letra está sin tildar, entonces solo aparece ocupado un subíndice, como por ejemplo:

Código PHP:
Ver original
  1. $resultado = array();
  2. stringOriginal = "a"; //Letra 'a' sin tildar
  3. $resultado = str_split(stringOriginal);

Array ( [0] => a )


En resumen:

Necesito que la función str_split() me retorne la letra tal como está.


[ Si está tildada:
Código PHP:
stringOriginal "á"//Letra 'a' tildada 
Array ( [0] => á )



Sino está tildada:
Código PHP:
stringOriginal "a"//Letra 'a' sin tildar 
Array ( [0] => a )



Problema
Pero en letras tildadas, no comprendo por qué me devuelve esto:
Código PHP:
stringOriginal "á"
Array ( [0] => � [1] => � )



Gracias.
__________________
Loading...
  #2 (permalink)  
Antiguo 21/07/2015, 13:24
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 2 meses
Puntos: 7
Pregunta Respuesta: Fnción "str_split" - Problema con letras con tíldes

Importante aclarar que no estoy usando bases de datos. El texto lo obtengo de una variable tipo string.
He intentado con funciones que contienen UTF-8, y no me ha ido bien. Si agrego la letra "ñ", sucede lo mismo.

Pareciera que la función str_split "no habla español"
__________________
Loading...
  #3 (permalink)  
Antiguo 21/07/2015, 13:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Fnción "str_split" - Problema con letras con tíldes

Cita:
Pareciera que la función str_split "no habla español"
Más o menos.

No es que str_split() "no hable español" es que los caracteres multi-byte, es decir, acentos, utf, etc. no son soportados por dicha función, que a lo mucho sólo soporta ASCII.

Para eso existen funciones multi-byte, en tu caso, debes revisar mb_split() en el manual: http://php.net/manual/es/function.mb-split.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 24/07/2015, 18:22
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 2 meses
Puntos: 7
De acuerdo Respuesta: Fnción "str_split" - Problema con letras con tíldes

Gracias pateketrueke
Ya funciona !!!

Aquí está el código pero en la siguiente sección está la función mb_substr() que me sugirió
https://github.com/ghidalgor/php-hig...s/function.php


Lo dejo como solución por si alguien lo llegara a necesitar

Código PHP:
function captureCharacter($textChain)
{
    
$arrData = array();
    for (
$position 0$textLen mb_strlen($textChain,'UTF-8'); $position $textLen$position++)
    {
             
$arrData[] = mb_substr ($textChain,$position,1,'UTF-8');
    }
    
         
//http://blog.openalfa.com/como-trabajar-con-cadenas-de-texto-en-php
    
      
return $arrData;


La rutina de PHP, ya "habla más español"
Gracias pateketrueke
__________________
Loading...

Etiquetas: Ninguno
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 15:55.