Foros del Web » Programando para Internet » PHP »

Funcion Separar Apellidos

Estas en el tema de Funcion Separar Apellidos en el foro de PHP en Foros del Web. 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 ) ...
  #1 (permalink)  
Antiguo 01/09/2007, 02:30
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 9 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
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 05:32.