Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2015, 03:27
andreiya
 
Fecha de Ingreso: diciembre-2013
Mensajes: 37
Antigüedad: 10 años, 10 meses
Puntos: 1
Funcion strrv() y funcion reverse propia no me funcionan

Al pasar ciertos caracteres por la función no me los imprime como es debido. El caracter al que me refiero es el de Euro '€'.

Primero me sucedió con la función nativa de PHP-strrv()-, así que me hice una propia para probar, pensando que sería cosa de la función, y me dió el mismo resultado.
Luego pensé que codificando la cadena a UTF8 se solucionaría y tampoco.

Dejo un ejemplo del código y su resultado

Código PHP:
reverse(utf8_encode('AB€D'));
/*******************************************************/
function reverse($input)
{
$str="";
$len strlen($input);
for(
$i=$len-1$i>=0$i--)

  
$str.=$input[$i];
   
}
echo 
$str;

D�‚¢�BA

Si no uso la codificación UTF8 me imprime lo siguiente:

D���BA

El caso es que al poner un if para comprobar si está el caracter '€', no lo reconoce al pasarlo en la función. Ejemplo:

Código PHP:
reverse'AB€D' );
/*******************************************************/
function reverse($input)
{
 
$str="";
$len strlen($input);
for(
$i=$len-1$i>=0$i--)
{
    if(
$input[$i]=='€' ){
       echo 
"CARACTER DETECTADO";
  }
}


Vamos, que parece que al recorrer el String hacia atrás no me detecta el caracter.
Lo curioso es que he probado haciendo el for hacía delante, o sea, leer el String y volver a imprimirlo sin cambiar el orden de las palabras y SÍ me imprime el caracter del Euro correctamente.
¿Alguien sabe qué pasa?.
Saludos