Avatar billede nemlig Professor
22. januar 2008 - 12:07 Der er 10 kommentarer og
1 løsning

Script til at sammensætte hr. og fru Nielsen

Hej.
Jeg har 2 navne-felter som fx.:

$navn1 = 'Peter G. Nielsen';
$navn2 = 'Hanne Nielsen';

Jeg vil gerne kunne sammensætte de 2 felter til ét felt, så der står:

'Peter G. og Hanne Nielsen'.

Da de har samme efternavn, skal efternavnet kun stå 1 gang.
Har du ikke samme efternavn, fx fordi Peter hedder 'Peter G. Hansen' skal det sammensatte navn være:

'Peter G. Hansen og Hanne Nielsen'.

Nogen der kan give lidt input??
Avatar billede zurekk Nybegynder
22. januar 2008 - 13:31 #1
$navn1 = 'Peter G. Nielsen';
$navn2 = 'Hanne Nielsen';

$navn1_split = explode( ' ', $navn1 );
$efternavn = &$navn1_split[count( $efter_check )-1];

if( preg_match( '/' . $efternavn . '$/i', $navn2 ) ) unset( $efternavn );

$navne = implode( ' ', $navn1_split ) . ' og ' . $navn2;


Det er selvfølgelig en grim kode, men du kan vel tilpasse det pænere til dit eget script :)
Avatar billede nemlig Professor
22. januar 2008 - 19:01 #2
Tak for dit forslag, men det driller:
Værdi af $navn_spilt = Array
Værdi af $efternavn =
Værdi af $navne = Peter G. Nielsen og Hanne Nielsen
Avatar billede nemlig Professor
22. januar 2008 - 19:18 #3
Jeg kan godt forstå, hvorfor $navn1_split = Array, da explode smider ordene i et Array. Men ellers er jeg ikke med.
Fx forvirrer det mig, at $navn1_split fremgår af sidste linje, da $navn1_split indeholder et Array.
Avatar billede olebole Juniormester
23. januar 2008 - 00:00 #4
<ole>

At implodere er det modsatte af at eksplodere. Array'ets elementer samles om mellemrum med implode( ' ', $navn1_split ).
    http://dk.php.net/manual/en/function.implode.php

/mvh
</bole>
Avatar billede nemlig Professor
24. januar 2008 - 08:28 #5
OK, men jeg kan ikke gennemskue, hvorfor scriptet ikke virker.
Resultatet af "$navne" er:

Peter G. Nielsen og Hanne Nielsen

Efternavnet står 2 gange.
Avatar billede olebole Juniormester
25. januar 2008 - 01:01 #6
<ole>

$navn1 = 'Peter G. Nielsen';
$navn2 = 'Hanne Nielsen';

$aNavn2 = explode(" ", $navn2);
array_pop($aNavn2);

print implode(" ", $aNavn2)." og ".$navn1;

/mvh
</bole>
Avatar billede nemlig Professor
25. januar 2008 - 10:11 #7
OK - så er vi ved at være der, og jeg er også helt med på, hvad der sker.
Men jeg skal også have lavet en kontrol på, om efternavnene er ens. Hvis de ikke er ens, skal de 2 variabeler jo blot sammensættes.

For at kontollerer om efternavnene er ens, forestiller jeg mig, at jeg anvender "explode" på begge navne-variabeler og sammenligner det sidste array. Hvis de ikke er ens, sammensætter jeg de 2 navne, og hvis de er ens, så anvender jeg olebole's forslag.

Men hvordan finder jeg det sidste array, så jeg kan sammenligne???

zurekk skriver noget med:
$efternavn = &$navn1_split[count( $efter_check )-1];
Men jeg synes ikke det virker.
Avatar billede nemlig Professor
25. januar 2008 - 10:28 #8
måske noget i den retning, hvis jeg skal tjekke efternavnet på $navn2.
$efternavn2 = $aNavn2[count($aNavn2)];
Avatar billede olebole Juniormester
25. januar 2008 - 14:37 #9
$navn1 = 'Peter G. Nielsen';
$aNavn1 = explode(" ", $navn1);

$navn2 = 'Hanne Nielsen';
$aNavn2 = explode(" ", $navn2);

if ( end($aNavn1) == end($aNavn2) ) {
    array_pop($aNavn2);
    print implode(" ", $aNavn2)." og ".$navn1;
}
Avatar billede nemlig Professor
25. januar 2008 - 16:48 #10
Hej Olebole. Så kører det.
Mange tak for dine bidrag.
Avatar billede olebole Juniormester
25. januar 2008 - 18:49 #11
Selvtak  ;o)
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