Separar una cadena por un caracter utilizando la función Explode() de PHP
Bienvenidos a ver tutoriales.com, en esta ocasión os traigo un ejemplo de la utilización de la función explode() de php.
Esta función recibe 2 parametros y genera un array con el número de elementos que encuentra en la cadena que se le proporcione, que estén separados por el caracter elegido.
Para explicarme mejor y lo comprendais más facilmente, si tengo la cadena “juan, carlos, roberto” y utilizamos explode para separar por el caracter “,” nos daría como resultado un array con 3 elementos el primero juan, el segundo carlos y tercero roberto.
Veamos un ejemplo:
<?
// EJEMPLO DE LA FUNCION EXPLODE
$cadena = ‘juan, carlos, roberto’;
$tutorial = explode(‘,’,$cadena);// RESULTADO
echo “Nombre 1″.$tutorial[0].”<br>”;
echo “Nombre 2″.$tutorial[1].”<br>”;
echo “Nombre 3″.$tutorial[2].”<br>”;?>
En el ejemplo anterior de la función explode podemos ver la asignación a $cadena, y la utilización de explode con el primer parametro que se le pasa con la “,” para separar la cadena que a continuación le pasamos $cadena, almacenandola en el array tutorial. Luego simplemente mostramos el array por pantalla utilizando un echo y accediendo a cada elemento del array.
¿Pero que ocurriría si no sabemos los elementos que tiene el array?
Pues no pasa nada… Si quieres recorrer un array sin saber la dimensión que tiene podemos utilizar un bucle foreach que explicamos en el tutorial anterior de igual manera que recorrimos el array $_POST().
Así podemos tener el control del array y tratar la información como queramos.
Espero que os haya sido de ayuda. De igual manera espero vuestros comentarios, que últimamente recibo más correos y muchos repetidos, si comentais nos ayudamos entre todos.
Un saludo!



20 Respuestas
Tipooo
mayo 5th, 2010 a 11:56 am
1Muy bueno, muchas gracias.
VideoTutoriales
mayo 5th, 2010 a 11:57 am
2A tí por darlas
Un saludo!
lalo carsi
diciembre 26th, 2011 a 6:28 pm
3¿Y cómo le hago para que en lugar de poner un $cadena = ‘juan, carlos, roberto’; sea los nombres de una base de datos?
Tengo esto, me muestra los datos pero no me los separa:
<?php
echo '’;
$link = mysql_connect(“localhost”, “root”);
mysql_select_db(“nombres”, $link);
$result = mysql_query(“SELECT nombre_completo FROM nombres_completos”, $link);
echo ” \n”;
echo “Nombre Completo \n”;
while ($row = mysql_fetch_row($result))
{
echo ” $row[0]\n”;
}
echo “”;
$cadena = $_POST[campo];
$elementos = explode(” “, $cadena);
echo $elementos[0];
echo $elementos[1];
echo $elementos[2];
echo $elementos[3];
echo ”;
echo ”;
?>
Gracias por la ayuda
VideoTutoriales
diciembre 27th, 2011 a 8:57 am
4$cadena = $_POST[campo]; sirve para recoger de un formulario, así que no es la manera correcta a no ser que lo estés enviando por ese método a rellenar la variable.
Tendrás que utilizar $row[0] que es el array que contiene el dato de nombre_completo y meter el explode dentro del while. Quedaría algo así:
while ($row = mysql_fetch_row($result))
{
$elementos = explode(” “, $row);
echo $elementos [0];
echo $elementos [1];
echo $elementos [2];
echo $elementos [3];
}
Volviendo a explicarlo sobre el código, leemos el registro, lo separamos con explode y guardamos en $elementos y luego simplemente lo mostramos.
Ya nos cuentas. Un saludo!
lalo carsi
diciembre 27th, 2011 a 6:35 pm
5De lujo, quedó perfectamente. Gracias.
VideoTutoriales
diciembre 28th, 2011 a 9:26 am
6De nada
Aquí estamos para lo que necesites!
lalo carsi
diciembre 28th, 2011 a 5:21 pm
7Ahí está el código final, ahora me surgieron otras dos 3 dudas:
1. ¿Cómo guardo esos datos ya separados en una base de datos de MySql según yo es como lo puse en la parte de hasta abajo pero creo que no funciona?
2. Si por ejemplo existe un nombre como “De La Cruz Mora Evangelina” como se haría para separarlo en apellido paterno, materno y nombre?
3. Si tiene dos o más nombres se pueden meter en 1 sólo campo?
<?php
echo "”;
echo “”;
echo “Apellido Paterno”;
echo “Apellido Materno”;
echo “Nombre”;
echo “”;
$link = mysql_connect(“localhost”, “root”);
mysql_select_db(“nombres”, $link);
$result = mysql_query(“SELECT nombre_completo FROM nombres_completos”, $link);
while ($row = mysql_fetch_row($result))
{
echo “”;
$elementos = explode(” “,$row[0]);
echo “$elementos[1]“;
echo “$elementos[2]“;
echo “$elementos[0]“;
echo “”;
}
$nombre = $elementos[0];
$apaterno = $elementos[1];
$amaterno = $elementos[2];
$sql = “Insert Into nombres_separados(nombre, apellido_paterno, apellido_mat)”;
$sql .= “Values (“.$nombre.”,’”.$apaterno.”‘,’”.$amaterno.”‘)”;
?>
VideoTutoriales
diciembre 28th, 2011 a 5:46 pm
8Empiezo a responder de atrás a adelante:
3) No tienes problema en guardar dos o más nombres en un campo, una A es como un 3 o un ” “, es decir, es una cadena como otra cualquiera.
2) No hay manera de identificar cual es el nombre, el apellido paterno y materno. A no ser que se hiciera alguna comprobación de contraste con alguna lista de nombres, pero aún así, hay apellidos que pueden ser nombres y nombres que pueden ser apellidos. Será un algoritmo más complicado, tambien puedes buscar nombres que tengan “de” o “la” o “de la”, algo más complejo viendo todas las variantes, no le veo solución rápida.
1) Tal y como tienes hecho el Insert, solo te quedaría lanzar la consulta con mysql_query(“”);
jagavi
enero 9th, 2012 a 8:02 pm
9Que tal, disculpen las molestias y espero me puedan ayudar:
Tengo una consulta la cual el dato que quiero recuperar esta almacenado de la siguiente forma: “1-0-0″, lo que pretendo es descomponer esa cadena para poder obtener cada uno de los números, mi código es el siguiente:
Al ejecutarlo, no me muestra nada, ni un mensaje de error ni ningun dato, espero alguien me pueda ayudar para ver donde estoy mal o cual es mi error, de antemano gracias.
VideoTutoriales
enero 9th, 2012 a 11:51 pm
10Tendrás que hacer
$cadena = “1-0-0″
$tutorial = explode(‘-’,$cadena);
Con ese código debe de funcionarte.
Un saludo!
lalo
enero 27th, 2012 a 5:32 pm
11Hola tengo us problemilla, mi codigo separa con el explode, tranforma a mayúsculas pero antes de insertar un valor quiero hacer una consulta para comparar que ese dato no ha sido guardado y mandar un mensaje de ya existe o caso contrario guardar el dato, pero me marco un error, según yo es en mi sintaxis de –> $consulta = “select * from nombres_separados”;
if ($elemento[3] = $consulta) etc etc etc
gracias y ojalá me puedas ayudar
$link = mysql_connect(“localhost”, “root”, “”);
mysql_select_db(“nombres”, $link);
$result = mysql_query(“SELECT nombre_completo FROM nombres_completos”, $link);
while ($row = mysql_fetch_row($result))
{
$cadena = $row[0];
$elemento = explode(” “, $cadena);
if (($elemento[3]))
{
$user0=strtoupper($elemento[0]);
echo “$user0″;
$user1=strtoupper($elemento[1]);
echo “$user1″;
$user2=strtoupper($elemento[2]);
$user7=strtoupper($elemento[3]);
echo “$user2 $user7″;
$consulta = “select * from nombres_separados”;
if ($elemento[3] = $consulta)
{
echo “Ya existe $elemento[3]“;
}
else
{
$sql = “Insert Into nombres_separados(apellido_pat, apellido_mat, nombre) Values (‘$user0′, ‘$user1′,’$user2 $user7′)”;
$res=mysql_query($sql);
}
}
else
{
$user0=strtoupper($elemento[0]);
echo “$user0″;
$user1=strtoupper($elemento[1]);
echo “$user1″;
$user2=strtoupper($elemento[2]);
echo “$user2″;
$consulta = “select * from nombres_separados”;
if ($elemento[2] = $consulta)
{
echo “Ya existe $elemento[2]“;
}
else
{
$sql = “Insert Into nombres_separados(apellido_pat, apellido_mat, nombre) Values (‘$user0′, ‘$user1′,’$user2 $user7′)”;
$res=mysql_query($sql);
}
}
VideoTutoriales
enero 27th, 2012 a 5:51 pm
12¿Existe la tabla “nombres_separados” ?
$consulta = “select * from nombres_separados”;
lalo
enero 27th, 2012 a 6:24 pm
13si, es la nueva tabla “nombres_separados”, lo jalo de “nombres_completos” y la guardo en “nombres_separados” están en la misma base de datos.
Como te decía creo que es en esas líneas donde está el error, porque creo que no está comparando lo que acabo de separar con el explode con lo que ya está guardado.
lalo
febrero 29th, 2012 a 12:34 am
14Hola tengo una duda, como se le hace para llenar un combo con datos de mysql y que al seleccionar una opcion me abra otra pagina de php.
Gracias.
VideoTutoriales
febrero 29th, 2012 a 8:05 am
15Para ello necesitas crear una pequeña función en javascript que lance la web dependiendo del contenido del combo. Para rellenar un combo (o select en html) lo único que tendrás que realizar es
Recuerda poner el option con un bucle para que ponga todos los registros de la base de datos que quieras. Con respecto a la función del combo, si utilizas dreamweaver busca el objeto que te comento, es el combo con funcion de javascript, no tengo ahora mismo a mano el código. Si no lo encuentras me lo comentas y lo busco.
Un saludo!
lalo
febrero 29th, 2012 a 4:38 pm
16Gracias
Sólo he visto para hacerlo de 2 o tres combos, yo sólo lo quiero para 1, el cual al darle click me mande a otra página.
Si me pudieras proporcionar el código sería de gran ayuda, gracias.
lalo
febrero 29th, 2012 a 5:29 pm
17Mira éste es el combo que me muestra los nombres, lo que quiero es que al darle click a alguno me mande a otra página.
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db("nombres", $link);
$res = mysql_query("select * from nombres_completos", $link);
while ($row = mysql_fetch_array($res))
$select .= "$row[nombre_completo]“;
echo ‘Seleccione uno:’;
echo ”;
echo ”;
echo ‘Elige…’.$select.”;
?>
VideoTutoriales
febrero 29th, 2012 a 10:12 pm
18En el otro comentario no apareció el código lo siento
necesitas poner los select dentro del bucle while
select >
option > $row[nombre_completo]
Tengo que buscarte el código de los combo que salten la web, mañana te lo paso a medio día
Un saludo!
lalo
marzo 1st, 2012 a 1:03 am
19ok muchas gracias, como lo había puesto ya hago el combo que me jala los datos de la base de datos, lo que quiero es que al darle click me mande a otra pagina de php.
Éste es mi código
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db("lab", $link);
$res = mysql_query("select * from tipo_cuestionario", $link);
while ($row = mysql_fetch_array($res))
$select .= "$row[1]“;
echo ‘Seleccione un cuestionaro:’;
echo ”;
echo ‘Elige…’.$select.”;
?>
VideoTutoriales
marzo 3rd, 2012 a 10:36 pm
20te dejo aquí la función
http://www.vertutoriales.com/index.php/crear-un-select-combo-que-envie-a-otra-pagina/
Un saludo!
Insertar al RSS los comentarios de esta entrada
Escribe tu comentario