Tänkte implentera en funktion som jämför två strängar och avgör om det är samma gatuadress.
Ex.
Korrekt adress:
Kungsgatan 15, 2tr
Alternativ som ska ge rätt svar:
Kungsg. 15
Kungsg. 15,2
Kungsgat 15
Kungsg 15, 2 tr
etc.
Jag har tänkt använda mig av soundex samt similar_text. Det kanske går att göra nån smart ereg_replace eller liknade för att lösa problemet. Soundex släpper igenom väldigt mycket (speciellt långa strängar) och jag tror inte metaphone är mycket bättre.
Nån som har några tips ???
soundex -- Calculate the soundex key of a string
similar_text -- Calculate the similarity between two strings
function cmpStreetName($str1, $str2)
{
// Lägger till en bokstav i början på strängarna så att den kan jämföra t ex Catarina gata och Katarina gata.
$str1 = "O" . strtoupper(trim($str1));
$str2 = "O" . strtoupper(trim($str2));
if(soundex($str1) == soundex($str2))
{
/* Här skulle behövas göras något åt g./g/gata/gatan etc */
$i = similar_text($str1, $str2, &$p);
if($p > 80) // strängarna liknar varandra till mer än 80%
return true;
}
return false;
}
Soundex har ju mest byggts som amerikanskt likaljudande.
Om man tar bort alla vokaler och ersätter konsonanter med en siffra kommer man rätt när.
I ditt fall är det nog skrivningen av uppgång och våning som är det svåra. Bolla gärna fler exemepel. Hur kan man styra inmatningen?
Man kan inte styra inmatningen. Det är det som är det jobbiga. Antal trappor, lägenhetsnummer och liknade information är ointressant.
Det som måste stämma är namnet på gatan och numret. Problemet är att det finns massa specialfall som sommarstugeområden, skärgården m fl. Dom kan ha helskumma adresser.
Om du tar postnumret till hjälp är du rätt nära.
Det finns en beskrivning på alla adresser inkl nummerstorheter på de större gatorna inom ett postnummer.
Kan det vara till hjälp?
Förklara gärna syftet med sökningen och vad du har för underlag.
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2