Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/12/2012, 02:29
kabe_jrr
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Uso de algunas funciones en PHP 4 y 5

Hola amigos:

Os cuento qué me pasa, porque me parece algo curiosísimo, y no sé a qué se debe...

Resulta que tengo un código PHP escrito en PHP 4.3.9, y hemos migrado a PHP 5. Hasta aquí todo bien, ya que la gran mayoría de cosas funciona sin problemas, pero como digo, es "la gran mayoría", hay cosas que no y no sé porqué.

Pongo el código primero y luego cuento dónde está el problema...

El código es este:

Código PHP:
function formateaNombreAps($textoApsNombre$mayus=0){
    if (
strrpos($textoApsNombre",")){
        
$sepNombreAps explode(", "$textoApsNombre);
        
$formato html_entity_decode($sepNombreAps[1])." ".html_entity_decode($sepNombreAps[0]);
        if (
$mayus!=0) return $formato;
        else return 
ucwords(mb_strtolower($formato));
    }else return 
0;

Creo que el código se entiende bien, pero explicó qué hace: La función recibe una cadena, que será del estilo:

MARTINEZ PEREZ, ALFREDO

Y lo que quiero que haga la función es "formatear" la cadena para ponerla de la siguiente forma:

ALFREDO PEREZ MARTINEZ

Y si el parámetro "$mayus" es "0", entonces se quiere que la salida sea esta:

Alfredo Perez Martinez

Como digo, antes funcionaba sin problemas (PHP 4.3.9) y en PHP 5 el problema está en esta línea:

Código PHP:
else return ucwords(mb_strtolower($formato"UTF-8")); 
Parece ser que a PHP 5 no le gustan esos dos métodos (no sé si habrá algunas otras que no le gusten...).

(Nota: uso "mb_strtolower" para que no me diera problemas las Ñ, al pasarlas a minúsculas. Antes de eso, usaba simplemente "strtolower")

He probado a poner ese código sin los dos métodos PHP:

Código PHP:
else return $formato
Y lo hace ok. También he probado colocando sólo un solo método, quitando o bien la llamada con "ucwords", o bien la de "mb_strtolower", pero no le gusta ninguna de las dos...

¿Alguien sabe qué puede estar pasando? Repito que antes me funcionaba ok...

¡Saludos y muchas gracias por adelantado!