Foros del Web » Programando para Internet » PHP »

Uso de algunas funciones en PHP 4 y 5

Estas en el tema de Uso de algunas funciones en PHP 4 y 5 en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/12/2012, 02:29
 
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!
  #2 (permalink)  
Antiguo 12/12/2012, 02:41
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Uso de algunas funciones en PHP 4 y 5

Al menos deberías decir el error que marca, en el código no se ve error aparente...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 12/12/2012, 03:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Uso de algunas funciones en PHP 4 y 5

El set de funciones multibyte depende de la extensión mbstring, la tienes activada ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 13/12/2012, 08:28
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Uso de algunas funciones en PHP 4 y 5

Cita:
Iniciado por masterpuppet Ver Mensaje
El set de funciones multibyte depende de la extensión mbstring, la tienes activada ?
Perfecto, ¡muchas gracias, porque de eso se trataba! Ya ha sido actiado eso y ahora el código utilizado con esas funciones va sin problemas.

Por cierto, ¿qué es exactamente eso de las funciones multibyte?

Lo dicho: muchísimas gracias!!

Etiquetas: funciones, html
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 13:24.