---
title: "Gatuadress"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/135609-gatuadress"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2005-10-12T08:32:23.000Z"
updated: "2011-09-13T19:18:11.000Z"
replies: 16
views: 1818
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/135609-gatuadress"
---

# Gatuadress

## #1 — learn, 2005-10-12T08:32Z

I min gästbok så matar användaren in sin adress. Nu vill jag att den inmatade adressen ska snyggas till. Den ska exempelvis se ut enligt följande: Grönagatan 24B. Alltså, stor bokstav i början, och stor bokstav efter numret (och dessutom inget mellanrum mellan gatans namn och "vägen"/"gatan" samt inget mellanrum mellan numret och bokstaven). 

Så om användaren matar in detta: "gröna gatan 13 B", så ska det bli "Grönagatan 13B".

Likaså om användaren matar in följande "blåbärs vägen 5 g", så ska det bli "Blåbärsvägen 5G".

Användaren ska inte få ett felmeddelande om denne inte matar in enligt ovannämnda regler, men jag vill ha en php-funktion som rättar till det innan adressen sätts in i databasen. 

Hur gör jag en sådan funktion...?? 

Tack så mkt!

Permalänk: https://www.webforum.nu/p/135609

## #2 — fiddler, 2005-10-12T09:34Z

Inget svar på frågan, men tänk på att det finns två- och tredelade gatunamn...

Permalänk: https://www.webforum.nu/p/1686784

## #3 — learn, 2005-10-12T10:41Z

Yepp, det är endast mellanslaget mellan namnet på gatan och gatan/gata/vägen/väg samt mellanslaget mellan numret och den eventuella bokstaven som skall tas bort.

Permalänk: https://www.webforum.nu/p/1686804

## #4 — caya, 2005-10-12T10:44Z

jamen det är ju en skillnad på särskrivningen gustav frödings gatan 5 och gustav frödingsgatan...
hur hade du tänkt att den skulle reagera på gustav frödings gata 5?

Permalänk: https://www.webforum.nu/p/1686806

## #5 — Mr. N., 2005-10-12T10:55Z

Jag har aldrig hört talas om Grönagatan i ditt exempel, däremot finns Gröna gatan på flera orter. Om det nu ens finns en Grönagatan, hur ska skriptet veta om namnet ska särskrivas eller inte?
Jag tror inte du kommer undan manuell kontroll, stor bokstav först och sist är nog inga problem dock.

Permalänk: https://www.webforum.nu/p/1686812

## #6 — learn, 2005-10-12T14:36Z

Sant, men om vi säger så här då, endast mellanslaget mellan numret och efterföljande bokstav ska tas bort + ovannämnda regler.

Permalänk: https://www.webforum.nu/p/1686860

## #7 — learn, 2005-10-12T15:39Z

Någon som vet hur jag kan göra?

**Klargörande:**
"gröna gatan 34 b" ska bli "Gröna gatan 34B"
(stor bokstav i början och slutet, inget mellanslag mellan nummer och bokstav)

Permalänk: https://www.webforum.nu/p/1686881

## #8 — Lasp, 2005-10-12T15:46Z

Ett sätt att starta är att kolla postnummerkatalogen.
Det finns en större del där gatunamnen inkl postnrområden finns med.
Problemet är att man kanske måste börja med postnumret, visa orten och sedan verifiera stavningen mot Postens register.

Permalänk: https://www.webforum.nu/p/1686882

## #9 — fiddler, 2005-10-12T16:05Z

För att se till att första bokstaven blir stor kan du använda ucfirst.
<http://www.php.net/manual/sv/function.ucfirst.php>

Permalänk: https://www.webforum.nu/p/1686895

## #10 — learn, 2005-10-13T09:48Z

> **fiddler skrev:**
>
> För att se till att första bokstaven blir stor kan du använda ucfirst.
> <http://www.php.net/manual/sv/function.ucfirst.php>

Bra då har vi ju löst första steget,  Nu vill jag ha stor bokstav i slutet också, samt ta bort eventuellt blanksteg innan sista bokstaven.

Permalänk: https://www.webforum.nu/p/1687134

## #11 — Melea, 2005-10-13T10:50Z

Knåpade ihop en liten funktion.

```php
function Address($text) {

	$lastletter = substr($text,-1,1);

	if(eregi("^[a-zåäö]", $lastletter)){
		$lastletter = strtoupper($lastletter);
	}

	return ucfirst(strtolower(substr($text,0,-1))).$lastletter;

}

echo Address('brokullevägen 25b');
```

> samt ta bort eventuellt blanksteg innan sista bokstaven.

Kommer inte på någon lösning för detta just nu.

Permalänk: https://www.webforum.nu/p/1687161

## #12 — learn, 2005-10-13T10:54Z

Tack Melea, någon annan som kan hjälpa mig med det sista?

Permalänk: https://www.webforum.nu/p/1687164

## #13 — Melea, 2005-10-13T11:07Z

En liten fullösning.

```php
function Address($text) {

    $lastletter = substr($text,-1,1);
    $space = substr($text,-2,1);

    if(eregi("^[a-zåäö]", $lastletter)){
        $lastletter = strtoupper($lastletter);
    }

    if(eregi("[^\s]", $space)) {
    	$space = str_replace(" ", "", $space);
    }

    return ucfirst(strtolower(substr($text,0,-2))).$space.$lastletter;

}

echo Address('brokullevägen 25 å');
```

Någon annan får gärna kommentera om det är det enklaste/bästa sättet att lösa det på.

Permalänk: https://www.webforum.nu/p/1687166

## #14 — Pelletsteknik, 2011-09-10T23:39Z

Jättebra funktion.
Om en kund har g:a vägen som adress, då blir det G:a vägeN.
Hur ska man göra för att t.ex sista bokstaven blir större bara om det är en siffra innan?

Permalänk: https://www.webforum.nu/p/2283006

## #15 — erikdal, 2011-09-12T10:53Z

Prova denna

> Om en kund har g:a vägen som adress, då blir det G:a vägeN.
> Hur ska man göra för att t.ex sista bokstaven blir större bara om det är en siffra innan?

\<?php

function Address($text) {

	$numAddr = false;

	for ($i = 0; $i \< strlen($text); $i++)
	{
		if (is_numeric(substr($text, $i, 1)))
		{
			$numAddr = true;
			break;
		}
	}

    $lastletter = substr($text,-1,1);
    $space = substr($text,-2,1);

    if (preg_match('^\[a-zåäö\]^', $lastletter) && $numAddr)
    {
        $lastletter = strtoupper($lastletter);
    }

    if(preg_match('\[^\\s\]', $space)) {
        $space = str_replace(" ", "", $space);
    }

    return ucfirst(strtolower(substr($text,0,-2))).$space.$lastletter;
}

echo Address('brokullevägen 25 å') . "\<br\>";
echo Address('G:a gatan') . "\<br\>";
echo Address('G:a gatan 123 g') . "\<br\>";

?\>

OBS: För funktionen **eregi** gäller

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.

Permalänk: https://www.webforum.nu/p/2283059

## #16 — Pelletsteknik, 2011-09-12T16:35Z

ärstavägen blir ärstavägen, när det är åäö som första bokstav.

Permalänk: https://www.webforum.nu/p/2283066

## #17 — Pelletsteknik, 2011-09-13T19:18Z

Tack, nu fungerar det.
Jag lade till detta:

```php
 if (!function_exists('mb_ucfirst')) {
    function mb_ucfirst($str, $encoding = "UTF-8", $lower_str_end = false) {
      $first_letter = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding);
      $str_end = "";
      if ($lower_str_end) {
	$str_end = mb_strtolower(mb_substr($str, 1, mb_strlen($str, $encoding), $encoding), $encoding);
      }
      else {
	$str_end = mb_substr($str, 1, mb_strlen($str, $encoding), $encoding);
      }
      $str = $first_letter . $str_end;
      return $str;
    }
  }
```

Permalänk: https://www.webforum.nu/p/2283099

---

Tråden på webben: https://www.webforum.nu/amne/php/135609-gatuadress
