Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2007, 02:30
nevergame
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
Funcion Separar Apellidos

Necesito crear una función que separe una cadena que contiene los apellidos de un campo.
Código PHP:

<?php 
//funcion que me protege la conversion en caracteres extraños
      
function strtolowerExtended($str)
   
      {     
              
$low = array(chr(193) => chr(225), //á
                           
chr(201) => chr(233), //é
                           
chr(205) => chr(237), //í
                           
chr(211) => chr(243), //ó
                           
chr(218) => chr(250), //ú
                           
chr(220) => chr(252), //ü
                           
chr(209) => chr(241)  //ñ
                           
);
  
            return 
strtolower(strtr($str,$low));
      }
      
function 
ver($cad){

if (
$arrayTexto[$contador]=="el" || $arrayTexto[$contador]=="la" || $arrayTexto[$contador]=="lo" || $arrayTexto[$contador]=="los" || $arrayTexto[$contador]=="las" || $arrayTexto[$contador]=="un" || $arrayTexto[$contador]=="una" || $arrayTexto[$contador]=="unos" || $arrayTexto[$contador]=="unas" || $arrayTexto[$contador]=="al" || $arrayTexto[$contador]=="del" || $arrayTexto[$contador]=="a" || $arrayTexto[$contador]=="de" || $arrayTexto[$contador]=="en" || $arrayTexto[$contador]=="entre" || $arrayTexto[$contador]=="hacia" || $arrayTexto[$contador]=="por" || $arrayTexto[$contador]=="tras" || $arrayTexto[$contador]=="con" || $arrayTexto[$contador]=="desde" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="sobre" || $arrayTexto[$contador]=="hasta" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="cuando" || $arrayTexto[$contador]=="como" || $arrayTexto[$contador]=="porque" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="tal" || $arrayTexto[$contador]=="si" || $arrayTexto[$contador]=="no" || $arrayTexto[$contador]=="y" || $arrayTexto[$contador]=="ni" || $arrayTexto[$contador]=="e" || $arrayTexto[$contador]=="i" || $arrayTexto[$contador]=="o" || $arrayTexto[$contador]=="u" || $arrayTexto[$contador]=="les" || $arrayTexto[$contador]=="lis" || $arrayTexto[$contador]=="des" ){

$es=1;
}else{ 
$es=2;}

return 
$es;
}

// Inicializamos las variables
$log=1;//puerta logica para ordenar el apellido en dos partes
$contador 0;//contador del bucle
$texto 'sevilla sevilla';
$textop=trim(strtolowerExtended($texto));//lo convierto todo a minusculas
$arrayTexto split(' ',$textop);// Cortamos la cadena por los espacios
$tamanocount ($arrayTexto);//cuento el tamaño del array para el bucle
$texto='';

// Reconstruimos la cadena
while($tamano >= $contador){

    if (
$arrayTexto[$contador]=="el" || $arrayTexto[$contador]=="la" || $arrayTexto[$contador]=="lo" || $arrayTexto[$contador]=="los" || $arrayTexto[$contador]=="las" || $arrayTexto[$contador]=="un" || $arrayTexto[$contador]=="una" || $arrayTexto[$contador]=="unos" || $arrayTexto[$contador]=="unas" || $arrayTexto[$contador]=="al" || $arrayTexto[$contador]=="del" || $arrayTexto[$contador]=="a" || $arrayTexto[$contador]=="de" || $arrayTexto[$contador]=="en" || $arrayTexto[$contador]=="entre" || $arrayTexto[$contador]=="hacia" || $arrayTexto[$contador]=="por" || $arrayTexto[$contador]=="tras" || $arrayTexto[$contador]=="con" || $arrayTexto[$contador]=="desde" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="sobre" || $arrayTexto[$contador]=="hasta" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="cuando" || $arrayTexto[$contador]=="como" || $arrayTexto[$contador]=="porque" || $arrayTexto[$contador]=="para" || $arrayTexto[$contador]=="tal" || $arrayTexto[$contador]=="si" || $arrayTexto[$contador]=="no" || $arrayTexto[$contador]=="y" || $arrayTexto[$contador]=="ni" || $arrayTexto[$contador]=="e" || $arrayTexto[$contador]=="i" || $arrayTexto[$contador]=="o" || $arrayTexto[$contador]=="u" || $arrayTexto[$contador]=="les" || $arrayTexto[$contador]=="lis" || $arrayTexto[$contador]=="des" ){

    if(
$log==1){//mientras no encuentra una palabra diferente de la condicion se acumula para el primer apellido
    
$texto =$texto.' '.$arrayTexto[$contador];
    
$contador++;}
    
    if(
$log==2){//Se encontro una palabra diferente de la lista se acumula en el segundo apellido
    
$texto2=$texto2.' '.$arrayTexto[$contador];
    
$contador++;}
    
    
    }else{
    
    if(
$log==1){//mientras no encuentra una palabra diferente de la condicion se acumula para el primer apellido
    
$texto=$texto.' '.$arrayTexto[$contador];
    
$contador++;
    
    
    }
    
    if(
$log==2){//Se encontro una palabra diferente de la lista se acumula en el segundo apellido
    
$texto2=$texto2.' '.$arrayTexto[$contador];
    
$contador++;
    }
     
    if(
$contador==1){
    
$log=1;
    }else{
    
$log=2;}
    
    }
    
}
echo 
$texto."-";
echo 
$texto2."-";
 


?>
me he quedado atascado , si consigo que funcione para apellidos complejos no funciona para simples espero que me puedan ayudar, el ejemplo funciona pasando una cadena, gracias