Avatar billede encorez Nybegynder
27. januar 2010 - 20:25 Der er 4 kommentarer og
1 løsning

Sammenlig navne med æ, ø og å

Jeg vil gerne lave en funktion der sammen om 2 navne er den samme person, når navne er skrevet forskelligt.

//Oprindelig navn
$name = "Sørensen Søren";
$name_array = explore(" ", $name); //splitter strengen op

$name_test = "Soeren Sorensen";

if(substr_count($name_test, "$name_array[0]") and substr_count($name_test, "$name_array[1]")){ echo "den samme";}

Så jeg tjekker begge navne i det oprindelig navn er indeholdt i $name_test.
Det virker umiddelbart, selv om det garanteret kan gøre smartere, så giv endelig forslag.

MEN det egentlig problem jeg skal have en løsning på er at lave en fuzzy-search-ting, altså at Søren og Soren er det samme, men også at Søren og Soeren er det samme. Det kan jo give mange kombinationsmuligheder der skal tjekkes, så jeg håber nogen har et godt forslag til dette.
Avatar billede Slettet bruger
28. januar 2010 - 11:07 #1
En idé du kunne prøve af kunne være noget lignende dette: Lav en kopi af det navn der skal tjekkes og i den kopi omskriver du alle æ-, ø- og å-tegn til hhv. ae, oe og aa og sammenlign bagefter resultatet. På den måde vil du stadig have det "rigtige" navn til senere brug.

Håber du forstår hvor jeg vil hen af med det og det kan være en hjælp :-)
Avatar billede encorez Nybegynder
28. januar 2010 - 11:29 #2
Hej, tak for indlæget.
Jeg har selv tænkt samme tanke. Problemet er ø kan ikke bare være oe men også bare o. Og å kan både være aa og a. Og hvis der både er æ,ø eller å i både fornavn og efternavn, så kan det blive til en del kombinationer jeg skal tage højde for.

Det er det jeg håber nogen har en bedre algoritme til en at jeg blot tager hovedet under armen og "hardcoder" alle de forskellige tænkelige kombinationer.
Avatar billede Slettet bruger
28. januar 2010 - 15:12 #3
Det burde være muligt at lave som regex.
Lad os prøve tage dit eksempel med "søren sørensen".
Først så omskriver vi ø'erne til regex-kode der tager højde for "oe" og "o" så navnet bliver til følgende "s(oe|o)ren s(oe|o)rensen", den regex-streng kan så bruges til at matche et andet navn.

Eksempel i koder:
<?php
$orig_name = "Søren Sørensen";
$test_name = "Soeren Sorensen";

$orig_to_regex = "/" . str_replace("ø", "(oe|o)", $orig_name) . "/";

if(preg_match($orig_to_regex, $test_name))
{
    echo "\"" . $orig_name . "\" og \"" . $test_name . "\" matchede hinanden!";
}
else
{
    echo "\"" . $orig_name . "\" og \"" . $test_name . "\" matchede IKKE hinanden!";
}
?>
Avatar billede encorez Nybegynder
10. februar 2010 - 19:42 #4
roxki, læg et svar for din hjælp
Avatar billede Slettet bruger
11. februar 2010 - 09:31 #5
du får et svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester