Gå til innhold

Hvordan bryte opp en setning med php ?


Anbefalte innlegg

Hei !

Jeg lurer på hvordan jeg bryter opp en setning med php.

 

Eks.

$adresse = "Fred Olsens gate 1 0152 OSLO";

denne skal brytes ved de fire siffrene.

 

$adresse2 = "Fred Olsens gate 1";

$poststed = "0152 OSLO";

 

Jeg skal bryte flere adresser fra hele landet, og den må altid skille med postnr.

 

Noen som har en enkel måte å gjøre dette på :cool:

Lenke til kommentar
Videoannonse
Annonse

Det beste i dette tilfellet vil da være å bruke en regex. Problemet er her hvordan du skal definere den, for å passe på at den er streng nok.

 

Adressen består først av alle tegn - det kan være alt fra bokstaver til husnummer og også teng som ' - så der er det ikke lett å være selektiv. Det eneste vi vet er at du forventer fire tall som er postnummeret, og så stedsnavnet. Så derfor foreslår jeg at mønsteret skal søke etter fire tall, et mellomrom og så minst en bokstav.

 

Husadressen sin regex som vi ikke kan begrense må da se slik ut:

(.+?)

 

Postnr + mellomrom + poststed kan da se slik ut:

([0-9]{4} [a-zæøå].+)

 

Hvis du da bruker preg_match så kan scriptet ditt se slik ut:

$adr = "Fred Olsens gate 1 0152 OSLO";
preg_match("/(.+?)([0-9]{4} [a-zæøå].+)/i" ,$adr, $matches);
var_dump($matches);

 

Da vil du få en output som ser slik ut:

array(3) {

[0]=>

string(28) "Fred Olsens gate 1 0152 OSLO"

[1]=>

string(19) "Fred Olsens gate 1 "

[2]=>

string(9) "0152 OSLO"

}

 

Lykke til :thumbup:

Endret av ????????
Lenke til kommentar

$adresse = "Fred Olsens gate 1 0152 OSLO";

$adresse = preg_split("/[0-9]{4}/", $adresse);

 

Du vil da få et array med adresse som [0] og resten [1]

 

Skriv print_r($adresse); hvis du ikke skjønner.

 

hvis det feks kommer "Fred olsens gate 1024 0152 OSLO"... Får du spørre noen andr ehva man skal gjøre:P

Endret av Zic0
Lenke til kommentar
Zic0, det virker absolutt som har all grunnkunnskap som skal til for å beherske regex. Jeg leset for mange år siden en artikkel på phpbuilder - ut over dette kommer reste med erfaring (dvs. et par år med prøving og feiling).

Spurte om du haddden liste som tilsvarte de flaggene du har etter delimiteren? Fikk visst ikke svar...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...