Straatnaam inkorten
Voor een opdracht moet ik een SOAP request verzenden met straatnaam er in.
Eerst vraag ik de gebruiker om postcode, waarna ik een API request verstuur naar een postcode naar adres API.
Ik krijg dan o.a. een straatnaam terug.
Volgens de XSD mag het veld maar 24 tekens bevatten.
Echter zijn veel straatnamen in Nederland (verrassend genoeg) langer dan 24 tekens
Heeft iemand een idee hoe ik dat het beste kan aanpakken.
Of heeft iemand ergens een mooi functie in de koelkast staan.
Alvast dank!
Eerst vraag ik de gebruiker om postcode, waarna ik een API request verstuur naar een postcode naar adres API.
Ik krijg dan o.a. een straatnaam terug.
Volgens de XSD mag het veld maar 24 tekens bevatten.
Echter zijn veel straatnamen in Nederland (verrassend genoeg) langer dan 24 tekens
Heeft iemand een idee hoe ik dat het beste kan aanpakken.
Of heeft iemand ergens een mooi functie in de koelkast staan.
Alvast dank!
ik dacht meer aan zo'n output:
Burgemeester Jonkheer Hesselt van Dinterstraat -> "BURG J H V DINTERSTR"
of iets in die richting
Burgemeester Jonkheer Hesselt van Dinterstraat -> "BURG J H V DINTERSTR"
of iets in die richting
Hm, ik denk dat je de een lijst moet gaan maken van veel voorkomen woorden en die vervangen in de string
Zoals straat,str burgemeester,burg, van,v etc.
Ik zou anders niet weten hoe je een straatnaam op die manier zou kunnen inkorten.
Zoals straat,str burgemeester,burg, van,v etc.
Ik zou anders niet weten hoe je een straatnaam op die manier zou kunnen inkorten.
Hanteer dan de officiële afkortingsregels uit de Nederlandse norm NEN 5825. In artikel 1 van het Besluit standaardschrijfwijze persoonsgegevens worden deze verplicht gesteld voor de Rijksoverheid.
Je bedoelt deze die je kunt kopen voor E40,60?
Inderdaad, ik zat al te googelen naar een gratis alternatief. Idioot dat je wel een Nederlandse norm moet aanhouden — die ook nog eens wettelijk verplicht is — maar die norm niet openbaar is.
Precies. Altijd maar weer geld uit je zak proberen te krijgen.
Ik was ook al aan het kijken naar BAG/Kadaster. Lijkt me een handig XML bestandje waarin mogelijk ook de afkortingen staan zoals ik begrijp, maar om te kunnen bestellen moet je een abonnement hebben.
Toevoeging op 14/03/2014 14:17:48:
Volgens mij heb ik hier wat gevonden (vanaf pagina 69).
Met afkortings lijst, welke woorden je weg mag laten en andere regels.
Ik was ook al aan het kijken naar BAG/Kadaster. Lijkt me een handig XML bestandje waarin mogelijk ook de afkortingen staan zoals ik begrijp, maar om te kunnen bestellen moet je een abonnement hebben.
Toevoeging op 14/03/2014 14:17:48:
Volgens mij heb ik hier wat gevonden (vanaf pagina 69).
Met afkortings lijst, welke woorden je weg mag laten en andere regels.
Quote:
Inkortingsregels voor straatnamen
Als een officieel door de gemeente vastgestelde straatnaam langer is dan 24 posities,
moet de eerste inkortingsregel worden toegepast. Blijkt na toepassing daarvan de straatnaam
nog steeds de 24 posities te overschrijden, dan treedt de tweede inkortingsregel in
werking, en zo vervolgend, tot het aantal posities nog ten hoogste 24 bedraagt of alle
inkortingsregels zijn toegepast.
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Als een officieel door de gemeente vastgestelde straatnaam langer is dan 24 posities,
moet de eerste inkortingsregel worden toegepast. Blijkt na toepassing daarvan de straatnaam
nog steeds de 24 posities te overschrijden, dan treedt de tweede inkortingsregel in
werking, en zo vervolgend, tot het aantal posities nog ten hoogste 24 bedraagt of alle
inkortingsregels zijn toegepast.
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Gewijzigd op 14/03/2014 13:59:45 door Michael -
Michael +1
Dankje Ward :) Nou zou dit dus nog op één of andere manier verwerkt moeten worden in een functie/class
if(strlen() >= 24) {
Inkortingsregel 1
}
if(strlen() >= 24) {
Inkortingsregel 2
}
etc.
if(strlen() >= 24) {
Inkortingsregel 1
}
if(strlen() >= 24) {
Inkortingsregel 2
}
etc.
Bedankt iedereen,
Heb de komende week in ieder geval wat te doen :D
Heb de komende week in ieder geval wat te doen :D
Haha inderdaad. Ik was er ook al aan begonnen, maar bij het gedeelte om Romeinse cijfers te vervangen door Arabische kwam ik nog niet uit.
Idee om jouw inkort methode te delen? En eventueel die van mij als ik 'm af ga maken.
Idee om jouw inkort methode te delen? En eventueel die van mij als ik 'm af ga maken.
Michael - op 14/03/2014 17:12:23:
Idee om jouw inkort methode te delen? En eventueel die van mij als ik 'm af ga maken.
Ja ga ik doen, is wel handig voor iedereen.
Hier alvast github repo voor iedereen die wilt bijdragen.
https://github.com/jargij/straatnaam-shortener
Uiteindelijke versie zal ik even hierop zetten
Jacek, Ik zie dat je er een versie op hebt gezet.
Maar zoals ik snel zie voert dit alle regels in één keer uit (Ook al ie op een gegeven al een lengte van 24 heeft)? En je zet geen romeinse cijfers om?
Ik krijg alleen wel een notice op regel 220 $split[$word] = substr($split[$word], 0, 2); met uiteindelijk execution time exceeded als gevolg.
Maar zoals ik snel zie voert dit alle regels in één keer uit (Ook al ie op een gegeven al een lengte van 24 heeft)? En je zet geen romeinse cijfers om?
Ik krijg alleen wel een notice op regel 220 $split[$word] = substr($split[$word], 0, 2); met uiteindelijk execution time exceeded als gevolg.
Hij voert niet altijd alle regels uit:
while (strlen($subject) > 24 && $rule <= 6)
while (strlen($subject) > 24 && $rule <= 6)
Ah oké :) Mooi opgelost op die manier. Alleen ik krijg hem nog niet helemaal werkend. Rond regel 219/220 krijg een execution time exceeded.
Je kunt zoeken en vervangen met arrays. Er zitten daarom nu per inkortingsregel te veel losse sleutel/waarde-paren in.
De 2e inkortingsregel is bijvoorbeeld:
Dat kun je reduceren tot één array voor de gehele inkortingsregel:
De 2e inkortingsregel is bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
array(
array("NOORD"=>"N"),
array("NOORDZIJDE"=> "NZ"),
array("OOST"=>"O"),
array("OOSTZIJDE" => "OZ"),
array("WEST" => "W"),
array("WESTZIJDE" => "WZ"),
array("ZUID" => "Z"),
array("ZUIDZIJDE" => "ZZ")
),
array("NOORD"=>"N"),
array("NOORDZIJDE"=> "NZ"),
array("OOST"=>"O"),
array("OOSTZIJDE" => "OZ"),
array("WEST" => "W"),
array("WESTZIJDE" => "WZ"),
array("ZUID" => "Z"),
array("ZUIDZIJDE" => "ZZ")
),
Dat kun je reduceren tot één array voor de gehele inkortingsregel:
Ja precies, Zoals dat laatste heb ik het ook gedaan.
Alleen hij gooit eerst alles in array's en loopt vervolgens overal doorheen.
Ik heb het echt in stappen gedaan. Alleen begrijp ik soms niet helemaal wat ze bedoelen.
Zo zeggen ze
Dus rechts beginnen, > 24, 2e van rechts, > 24, 3e van rechts, toch?
Vervolgens staat er
Aangegeven zou dus zijn van rechts naar links.
Vervolgens
Betekent dit dat 'de aangegeven wijze' betekent dat je alleen het laatste woord moet vervangen?
Alleen hij gooit eerst alles in array's en loopt vervolgens overal doorheen.
Ik heb het echt in stappen gedaan. Alleen begrijp ik soms niet helemaal wat ze bedoelen.
Zo zeggen ze
Quote:
Tenzij anders vermeld worden de inkortingsregels van rechts beginnend toegepast en zijn
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
ze uitsluitend van toepassing op de in deze bijlage vermelde woorden.
Dus rechts beginnen, > 24, 2e van rechts, > 24, 3e van rechts, toch?
Vervolgens staat er
Quote:
Inkortingsregel 8
Kort de navolgende beginwoorden op de aangegeven wijze in.
Kort de navolgende beginwoorden op de aangegeven wijze in.
Aangegeven zou dus zijn van rechts naar links.
Vervolgens
Quote:
Inkortingsregel 9
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Betekent dit dat 'de aangegeven wijze' betekent dat je alleen het laatste woord moet vervangen?
>> Dus rechts beginnen, > 24, 2e van rechts, > 24, 3e van rechts, toch?
Ja, zo lees ik die regel ook.
De "beginwoorden" van regel 8 staan aan het begin, dus dan wordt het bij uitzondering van links naar rechts. Regel 9 herhaalt dat patroon vervolgens voor het tweede woord van links.
Ja, zo lees ik die regel ook.
De "beginwoorden" van regel 8 staan aan het begin, dus dan wordt het bij uitzondering van links naar rechts. Regel 9 herhaalt dat patroon vervolgens voor het tweede woord van links.
>>> De "beginwoorden" van regel 8 staan aan het begin, dus dan wordt het bij uitzondering van links naar rechts. Regel 9 herhaalt dat patroon vervolgens voor het tweede woord van links.
Dat haal ik er niet uit. Er staat 'op de aangegeven wijze in' en dat is niet van links naar rechts.
Een beetje vreemd dus. Geen idee wat hier nou het juiste is.
Dat haal ik er niet uit. Er staat 'op de aangegeven wijze in' en dat is niet van links naar rechts.
Een beetje vreemd dus. Geen idee wat hier nou het juiste is.
INKORTINGSREGEL 8
Kort de navolgende beginwoorden op de aangegeven wijze in.
+
INKORTINGSREGEL 9
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Uit die twee samen leid ik af dat met “beginwoorden” in regel 8 wordt bedoeld: het eerste woord van links.
Kort de navolgende beginwoorden op de aangegeven wijze in.
+
INKORTINGSREGEL 9
Pas inkortingsregel 8 opnieuw toe, maar nu op het tweede woord van links.
Uit die twee samen leid ik af dat met “beginwoorden” in regel 8 wordt bedoeld: het eerste woord van links.




