Foros del Web » Programando para Internet » PHP »

Separar un string en palabras

Estas en el tema de Separar un string en palabras en el foro de PHP en Foros del Web. Muy buenas a [email protected] Estoy atascado en un problema y no encuentro la función PHP que sirva para esto: Tengo un string ($nombre_completo) y quiero ...
  #1 (permalink)  
Antiguo 23/04/2006, 14:51
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Separar un string en palabras

Muy buenas a [email protected]

Estoy atascado en un problema y no encuentro la función PHP que sirva para esto:

Tengo un string ($nombre_completo) y quiero separarlo en 2 ($nombre y $apellidos) y después de revisar el manual en php.net no he encontrado la manera de hacerlo.

El caso es que en $nombre_completo puede haber dos nombres y dos apellidos o cualquier otra variante (2 y 1, 1 y 2, 1 y 1,...)

La pregunta es ¿alguien sabe cómo se puede hacer esto de un forma eficaz o qué función se puede usar para ello?

Muchas gracias.
  #2 (permalink)  
Antiguo 23/04/2006, 16:05
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 12 años, 9 meses
Puntos: 33
Podrias uitlizar la funcion split() o explode()

¿Una pregunta? Tienes una campo para recibir el nombre(S) y otro para los apellidos... O tienes un campo para cada "elemento"?
  #3 (permalink)  
Antiguo 23/04/2006, 17:04
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Hola mauled!!

Gracias por tu respuesta

He probado con esas dos funciones y, o no se manejarlas, o no es lo que necesito.

El tema es que tengo en un mismo campo el nombre y apellidos y lo tengo que pasar a otro form, pero separado (por un lado el/los nombres y por otro el/los apellidos), lo he solucionado de otra forma que no tiene nada que ver, pero de todas maneras me interesaría saber cómo hacerlo como planteaba en el post inicial.

Muchas gracias.
  #4 (permalink)  
Antiguo 23/04/2006, 17:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 50
Antigüedad: 13 años, 1 mes
Puntos: 1
yo te recomendaria hacer 4 campos extras en la base de datos o en el formulario si es que no usas DB.
__________________
Los estandares deben hacer a los navegadores, no los navegadores a los estandares...
  #5 (permalink)  
Antiguo 23/04/2006, 17:30
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 12 años, 4 meses
Puntos: 5
De acuerdo Cadenas

Hola rbczgz

A lo mejor trabajando de esta manera te ayuda en algo :

1.- Archivo html ( formulario) main.html

Código PHP:

<HTML>
<
HEAD>
<
TITLEPrueba </TITLE>

</
HEAD>

<
BODY>
<
FORM METHOD=POST ACTION="prueba.php">
Nombres y Apellidos <br>
<
INPUT TYPE="text" NAME="nombres"> <br>
<
INPUT TYPE="submit" value="Enviar">
</
FORM>
</
BODY>
</
HTML


2.- Archivo prueba.php

Código PHP:

<?php
$llegonombre
=trim($_POST['nombres']);
$cadena=explode(" ",$llegonombre);
if (!empty(
$cadena[3]))
{
    echo 
"1er Nombre :".$cadena[0];
    echo 
"<br>2do Nombre :".$cadena[1];
    echo 
"<br>Apell Paterno :".$cadena[2];
    echo 
"<br>Apell Materno :".$cadena[3];

}
else
{
    echo 
"<br>Nombre :".$cadena[0];
    echo 
"<br>Apell Paterno :".$cadena[1];
    echo 
"<br>Apell Materno :".$cadena[2];
}
?>

Podria reducirse el Script; lo hago con fines didacticos


espero que te ayude

Salu2

__________________
. .: El mejor Inicio :. .
  #6 (permalink)  
Antiguo 23/04/2006, 17:34
 
Fecha de Ingreso: noviembre-2004
Mensajes: 50
Antigüedad: 13 años, 1 mes
Puntos: 1
tambien se podrian separar asi:

$nombre = "juan jose garcia marquez";
$array = explode(chr(32),$nombre);
echo $array[1]; //Daria el segundo nombre
str_word_count($nombre); //Para saber cuantos nombres o apeidos tiene, recuerda que siempre son dos apeidos aveces 3, ahi metele coco..

Suerte!.
__________________
Los estandares deben hacer a los navegadores, no los navegadores a los estandares...
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 18:14.