elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  split variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: split variable  (Leído 2,427 veces)
extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
split variable
« en: 31 Mayo 2012, 02:04 am »

Tengo una variable "datos" con valor: "Luis Perez¡x¡20 años"

La tengo que separar en 2 variables:

$nombre = "Luis Perez"
$edad = "20 años"

Estuve viendo la función split aca: http://php.net/manual/es/function.split.php , pero cuando intento algo como:

Código:
<?php
$datos = "Luis Perezixi20 años";
list($nombre, $edad) = split('[¡x¡]', $datos);
echo $nombre
echo $edad
?>

Pero me está tomando cualquier caracter "¡" o "x" como separador, aparte de que me está mostrando cualquier cosa de resultado, simplemente está chupando las "i" y "x" del valor de la variable.

EDIT: Ahora también probé:

Código:
$datos = "Luis Perezix20 años";
$array = split('["ix", 2]', $datos);
echo $array[0];

Y me devuelve "Lu" XD, en $array[1] está sólo la "s" :( no entiendo.

EDIT2: Creo que le pegué, era con explode :P

Código:
$datos = "Luis Perezix20 años";
$array = explode("ix", $datos);
$nombre = $array[0];
$edad = $array[1];
echo $nombre;
echo $edad;

Corríjanme :P


« Última modificación: 31 Mayo 2012, 02:35 am por extreme69 » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: split variable
« Respuesta #1 en: 31 Mayo 2012, 03:14 am »

Hola,

Efectivamente explode te sirve para ese nombre. Pero que pasa si el nombre es "Luix Perezix20 años" ?

Código
  1. <?php
  2. $datos = 'Luix Perezix20 años';
  3. list($nombre,$edad) = explode('ix',$datos);
  4.  
  5. echo $nombre.'<br />';
  6. echo $edad;
  7. ?>

Devolvería: Lu Perez

Para eso lo mejor es un regex (expresión regular).
Un ejemplo de google.
Código
  1. $result = preg_split('/(?<=\d)(?=\p{L})|(?<=\p{L})(?=\d)/u', $subject);

Esto divide entre texto y numeros.
Devolvería: $nombre = Luix Perezix, $edad = 20 años.


Ejemplo final:
Código
  1. <?php
  2. $datos = 'Luix Perezix20 años';
  3.  
  4. // Separamos el nombre de los años.
  5. list($nombre,$edad) = preg_split('/(?<=\d)(?=\p{L})|(?<=\p{L})(?=\d)/u', $datos);
  6. // Eleminamos los ultimos 2 caracteres (ix) del nombre.
  7. $nombre = substr($nombre,0,strlen($nombre)-2);
  8.  
  9. echo $nombre.'<br />';
  10. echo $edad;
  11. ?>

Devolvería:
Código:
Luix Perez
20 años

Saludos


En línea

extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
Re: split variable
« Respuesta #2 en: 31 Mayo 2012, 03:55 am »

Muchas gracias por la sugerencia, de todas formas el "ix" era un ejemplo", voy a usar algo como ¡!562&!&&¿? como separador, de esta manera sé que el error es casi imposible o al menos es 1 sólo.

Los casilleros no son de "nombre" y "edad", fue un ejemplo que puse, por lo que "edad" en realidad puede o no contener números al igual que nombre.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines