1
Aprender a programar desde cero / Operar con cadenas (Strings) en PHP para extraer los apellidos de un nombre
« en: 15 de Febrero 2017, 16:58 »
Hola, tengo un problema que no lo logro resolver utilizando las funciones substring de PHP para extraer de una cadena entera de apellidos, los apellidos individuales por separado, voy a copiar el código:
Este es el HTML
Y este es el PHP:
El error me da al retornar el valor de las variables $apellido1 y $apellido2, parece ser que no retorna nada
Este es el HTML
Código: [Seleccionar]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Prueba formulario PHP</title>
</head>
<body>
<h1>En éste formulario todos los campos son requeridos</h1>
<form action="formulario.php" method="post">
<fieldset> <!--etiqueta para agrupar elementos de un formulario-->
<p> <!-- definir un parrafo-->
<label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre">
<br/> <br/>
<label for="apellidos">Apellidos: </label>
<input type="text" name="apellidos" id="apellidos">
<br/> <br/>
<label for="birthdate">Fecha de nacimiento: </label>
<input type="date" name="birthdate">
<br/> <br/>
<label for="email">Email: </label>
<input type="text" name="email" id="email">
<br/> <br/>
<input type="radio" name="sexo" id="varon" value="Varón">
<label for="varon">Varón: </label>
<br/> <br/>
<input type="radio" name="sexo" id="mujer" value="Mujer">
<label for="mujer">Mujer: </label>
<br/> <br/>
<input type="submit" value="Enviar">
<input type="reset">
</p>
</fieldset>
</form>
</body>
</html>
Y este es el PHP:
Código: [Seleccionar]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>
<body>
<?php
$nombre = $_REQUEST['nombre'];
$apellidos = $_REQUEST['apellidos'];
$birthdate = $_REQUEST['birthdate'];
$email = $_REQUEST['email'];
$sexo = $_REQUEST['sexo'];
$apellido1="";
$apellido2="";
function ExtraeApellido1 ($apellidos) { //funcion para extraer el primer apellido
for ($i = 0; $i < $apellidos; $i++) {
if ($apellidos[i]==" "){ //si tiene más de un 1 apellido voy a buscar el espacio
$apellido1 = substr($apellidos, 0, $i); //extraigo con substring desde la posicion 0 del string apellidos hasta el espacio el primer apellido
}
}
return $apellido1;
}
function ExtraeApellido2 ($apellidos) { //funcion para extraer el segundo apellido
for ($i = 0; $i < $apellidos; $i++) {
if ($apellidos[i]==" "){ //si tiene más de un 1 apellido voy a buscar el espacio
$apellido2 = substr($apellidos, ($i+1)); //extraigo con substring desde la posicion del espacio +1 hasta el final el segundo apellido
}
}
return $apellido2;
}
function CalculaEdad( $fecha ) { //funcion para calcular edad a partir de una fecha date tipo yyyy-mm-dd
list($Y,$m,$d) = explode("-",$fecha);
return( date("md") < $m.$d ? date("Y")-$Y-1 : date("Y")-$Y );
}
$apellido1 = ExtraeApellido1($apellidos);
$apellido2 = ExtraeApellido2($apellidos);
$edad = CalculaEdad($birthdate);
echo "Tu nombre es " . $nombre . " y tu primer apellido es " . $apellido1 . " y tu segundo apellido " . $apellido2 . " y tienes " . $edad . " años.";
?>
</body>
</html>
El error me da al retornar el valor de las variables $apellido1 y $apellido2, parece ser que no retorna nada