Avatar billede michaelgm Nybegynder
14. maj 2007 - 18:28 Der er 5 kommentarer og
1 løsning

preg_split linie og navne

Hvordan vil jeg kunne splitte dette og sætte i array:

$skuespillere="Tim Nielsen (Kurt hansen, maler)
Niels Anders Thomsen (Kim sørensen, tømmer)";

Så det kommer sådan ud
Array
(
    [0] => Array (
                  [skuespiller] => Tim Nielsen
                  [rollenavn] => Kurt hansen
                  [filmrolle]=> maler
                }
    [1] => Array (
                  [skuespiller] => Niels Anders Thomsen
                  [rollenavn] => Kim sørensen
                  [filmrolle]=> tømmer
                }
)

Håber nogen kan hjælpe
Avatar billede jakobdo Ekspert
14. maj 2007 - 19:02 #1
Prøv følgende kode:

$skuespillere="Tim Nielsen (Kurt hansen, maler)
Niels Anders Thomsen (Kim sørensen, tømmer)";

if(preg_match_all('/(.+?)\\s\\((.+?),\\s(.+?)\\)/', $skuespillere, $match))
{
  echo '<pre>';
  print_r($match);
  echo '</pre>';
}
Avatar billede michaelgm Nybegynder
14. maj 2007 - 19:14 #2
Det var ikke helt sådan jeg havde forestillet mig det.
$skuespillere="Tim Nielsen (Kurt hansen, maler)
Niels Anders Thomsen (Kim sørensen, tømmer)
Heine Nielsen
Jens Ove Lentz (Sutte hansen)";

Den udskriver stadig kun 2 og hvis der ikke står () efter vil det ikke komme ind i mit array og så vil der gå kluder i det?
Avatar billede jakobdo Ekspert
14. maj 2007 - 19:51 #3
Pænt er det bestemt ikke. :o)
Men det giver dig det resultat du ønsker:

<?php
//http://www.eksperten.dk/spm/778327

$s_navne="Tim Nielsen (Kurt hansen, maler)
Niels Anders Thomsen (Kim sørensen, tømmer)
Heine Nielsen
Jens Ove Lentz (Sutte hansen)";

$skuespillere = array();

$a_navne = explode("\r\n", $s_navne);
foreach($a_navne AS $s_skuespiller)
{
    $a_hjaelp = array();
    if(preg_match('/(.+?)\\((.+?)\\)/', $s_skuespiller,$a_dele))
    {
        $a_hjaelp['navn'] = $a_dele[1];
        $a_dele2 = explode(',',$a_dele[2]);
        if(!empty($a_dele2[0]))
            $a_hjaelp['rollenavn'] = $a_dele2[0];
        if(!empty($a_dele2[1]))
            $a_hjaelp['filmrolle'] = $a_dele2[1];
    }
    else
    {
        $a_hjaelp['navn'] = $s_skuespiller;
    }
    $skuespillere[] = $a_hjaelp;
}

echo '<pre>';
print_r($skuespillere);
echo '</pre>';

?>
Avatar billede michaelgm Nybegynder
14. maj 2007 - 20:02 #4
Mange tak for hjælpen lige hvad jeg manglede. Laver du et svar?
Avatar billede jakobdo Ekspert
14. maj 2007 - 20:06 #5
Kan du tro.
Et svar!
Avatar billede jakobdo Ekspert
14. maj 2007 - 20:24 #6
Takker for point.
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