Avatar billede pissed_squirrel Nybegynder
18. februar 2009 - 20:59 Der er 11 kommentarer og
1 løsning

eregi_replace og arrays?

Hej Eksperter

Nu har jeg brug for jeres hjælp igen

Jeg laver et udtræk fra en database og laver forskellinge ting med dette, nu vil jeg så godt tjekke om der står nogle ting i den tekst jeg har trykket ud og derefter udskifte det med noget andet

Mit problem ligger i at de ting der skal tjekkes på og udskiftes med ligger i arrays

alle_billeder
alle_billed_navne

Jeg havde tænkt mig at bruge str_replace, men hvis jeg samtidig godt vil lave billedfilnavnet om, sådan at den viser billedet på siden i stedet for bare at skrive det ud, så er det jeg render ind i problemer

Har prøvet med:

$text = str_replace($alle_billed_navne, "<img src=\"".$alle_billeder."\" alt=\"\" />", $text);

Men det fungerer ikke, da den så bare laver et broken-picture og hvis jeg viser hvor billedet skulle ligge så står der bare array i stedet for filnavnet.

Så tænkte jeg på at bruge eregi_replace, men den understøtter jo ikke arrays, og så er jeg jo ligevidt =(

Nogle der kan komme med en løsning?
Avatar billede erikjacobsen Ekspert
18. februar 2009 - 21:16 #1
Du kan bruge http://php.net/strtr

Eller er der en sammenhæng mellem dine to arrays, så man kan udregne billednavnet ud fra navnet?
Avatar billede pissed_squirrel Nybegynder
18. februar 2009 - 22:01 #2
Der er en sammenhæng, da de står i en tabel og bliver hevet ud samtidig og derfor vil have samme key i hvert deres array

Kan jo ikke bruge strtr da:

If from and to are different lengths, the extra characters in the longer of the two are ignored.

Jeg kan f.eks. have dette stående i tabellen

[Billede1] detteeretbillede.jpg
Avatar billede erikjacobsen Ekspert
18. februar 2009 - 23:03 #3
Jo du kan. Funktionen har to anvendelser, et eksempel fra siden:

<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
Avatar billede pissed_squirrel Nybegynder
19. februar 2009 - 15:31 #4
Hmm, så dvs. jeg skal i lave et array med string => string i stedet for at lave 2?

Det må jeg lige prøve
Avatar billede pissed_squirrel Nybegynder
19. februar 2009 - 15:37 #5
Det kan godt være jeg bare ikke lige har set lyset endnu, men hvordan vil man lave et array som har string=>string når man hiver ud af database

Jeg får nemlig:

Array ( [0] => [Missing]=>missing_picture.jpg )

Og der skulle vel gerne stå:

Array ( [Missing]=>missing_picture.jpg )

i stedet?
Avatar billede erikjacobsen Ekspert
19. februar 2009 - 15:50 #6
$a["missing"]="missing_picture.jpg";
$a["poul"]  ="poul_nyrup_paa_cykel.jpg";
Avatar billede pissed_squirrel Nybegynder
19. februar 2009 - 19:47 #7
Det lykkedes mig at få lavet det til at virke ved at bruge denne funktion i samarbejde med strtr

function addArray(&$array, $id, $var)
{
    $tempArray = array( $var => $id);
    $array = array_merge ($array, $tempArray);
}

while ($row = mysql_fetch_array($result))
{
    addArray(&$billeder_from_to, "<img src=\"upload/billeder/".$row["Picture"]."\" alt=\"\" style=\"border-style: solid; border-width: 1; border-color: black\" />", $row["Navn"]);
}

Brugte så strtr sådan her

$text = strtr($text, $billeder_from_to);

Og det virker dejlig perfekt, så alt er jo som det skal være

Jeg kan se at du ikke vil have nogle point erikjacobsen, så hvis det er sandt, så vil jeg lukke og slukke når du har bekræftet.
Avatar billede erikjacobsen Ekspert
19. februar 2009 - 19:58 #8
Det skulle være tilstrækkeligt med

while ($row = mysql_fetch_array($result))
{
    $billeder_from_to[$row["Navn"]]= "<img src=\"upload/billeder/".$row["Picture"]."\" alt=\"\" style=\"border-style: solid; border-width: 1; border-color: black\" />";
}
Avatar billede pissed_squirrel Nybegynder
19. februar 2009 - 20:20 #9
Hmm, det må jeg lige kigge på
Avatar billede pissed_squirrel Nybegynder
24. februar 2009 - 15:43 #10
Så fik jeg endelig kigget på det som du skrev i foregående kommentar, og det virker jo super. Så er der jo ingen grund til at have en funktion som skal gøre det samme hehe

Skal vi lukke den her?
Avatar billede erikjacobsen Ekspert
24. februar 2009 - 18:01 #11
Gerne. Jeg samler slet ikke på point, tak. Svar selv, og accepter dit eget svar.
Avatar billede pissed_squirrel Nybegynder
24. februar 2009 - 19:22 #12
Det gør jeg så =)

Mange tak for hjælpen!
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