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
$tamano= count ($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."-";
?>