Avatar billede kimg Nybegynder
17. januar 2008 - 14:15 Der er 12 kommentarer og
1 løsning

Erstat tekst med funktion

Håber der er en der kan hjælpe mig på vej, er gået lidt i stå, gør det selvfølgelig ikke bedre at man er ramt af lidt influenza ;-)

Jeg har noget tekst, i den tekst kan være noget der skal erstattes af nogle funtioner, f.eks #billede#1 og #mappe#3,mit problem er at jeg skal bruge værdierne i #billede#1 #mappe#3 funktionen, samtidig med at de skal erstattes af funktionen.

Håber det er forståeligt

Kim
Avatar billede mcardle Nybegynder
17. januar 2008 - 15:23 #1
Jeg kan måske hjælpe, hvis du fortæller hvad du skal lave?

//mcardle
Avatar billede kimg Nybegynder
17. januar 2008 - 16:01 #2
Jeg skal have erstattet nogle nogle forskellige værdier med nogle funktioner

eks.
$value1 = billede
$value2 = 1
function mapper($value1,$value2){

}
jeg vil erstatte #billede#1 med mapper($value1,$value2).

Kim
Avatar billede nielle Nybegynder
17. januar 2008 - 17:07 #3
Det er lidt svært at se mønsteret - hvad skal f.eks. #billede#2 og #billede#3 er stattes med?
Avatar billede mcardle Nybegynder
17. januar 2008 - 17:29 #4
Som nielle siger så er det lidt svært, at se sammenhængen.

Hvis du har en fil, men vil have hele stien med mapper og det hele på, så kunne det være noget a´la:

function mappe($fil){
  return "billeder/biler/" . $fil;
}

Jeg ved ikke om det er det du leder efter?

//mcardle
Avatar billede kimg Nybegynder
17. januar 2008 - 18:36 #5
Ja det er også svært at forklare, men det kunne være et at jeg havde nogle gallerier, som jeg så ville sætte ind der hvor der står f.eks #mappe#1 osv. funktionen er ikke noget problem, det er bare sådan at det skulle være muligt at includere en funtktion ved at bruge f.eks #mappe#1

Kim
Avatar billede nielle Nybegynder
17. januar 2008 - 21:25 #6
De funktioner som du vil have indsat resutatet af ... er de af:

Type 1) Returnere en streng:

function mapper($value1,$value2){
    return "Denne tekst skal indsættes...";
}

- eler af:

Type 2) Udskriver noget med det samme:

function mapper($value1,$value2){
    echo "Denne tekst skal indsættes...";
}
Avatar billede kimg Nybegynder
18. januar 2008 - 08:51 #7
jeg bruger "return" type 2 ;-)
Avatar billede kimg Nybegynder
18. januar 2008 - 08:58 #8
Sorry type 1 ;-))
Avatar billede nielle Nybegynder
18. januar 2008 - 09:34 #9
Så burde det kunne klares med str_replace() funktionen:

<?
$nogetTekst = "Jeg har noget tekst, i den tekst kan være noget der skal erstattes af nogle funtioner, f.eks #billede#1 og #mappe#3,mit problem er at jeg skal bruge værdierne i #billede#1 #mappe#3 funktionen, samtidig med at de skal erstattes af funktionen.";

$nogetTekst = str_replace("#billede#1", mapper($value1,$value2), $nogetTekst);

echo $nogetTekst;
?>
Avatar billede kimg Nybegynder
18. januar 2008 - 10:02 #10
ja det bruger jeg normalt, men der kan være forskellige værdier f.eks #mappe#1 #minMappe#5 derfor har jeg brug for først at trække værdierne ud og få dem ind i funktionen

Har prøvet med preg_match_all og tags [billede][/billede], der hentede jeg alt ud mellem tags, på den måde kunne jeg fange værdierne, men så loopede den min indhold for mange gange.

Kim
Kim
Avatar billede nielle Nybegynder
18. januar 2008 - 11:46 #11
Det var bl.a. derfor at jeg suurgte til hvad mønsteret egentlig var. :^)

Jeg synes mere at det lyder om om at det er preg_replace_callback() du skal have fat på. Men jeg er ikke sikker på at jeg helt hvad du mener med at den lloper dit indhold for mange gange?
Avatar billede kimg Nybegynder
21. januar 2008 - 12:54 #12
Jeg vendte tilbage til min oprindelige model med tags [], min løsning blev følgende.

$str = str_ireplace("[/gallery]", "", $data["content"], $count);
   
for($i = 0; $i <$count; $i++){
    $data["content"] = str_replace_count("[gallery]","[gallery$i]",$data["content"],1);
    $data["content"] = str_replace_count("[/gallery]","[/gallery$i]",$data["content"],1);   
}
$str1 = str_ireplace("[/gallery", "", $data["content"], $count1);
for($a = 0; $a <$count1; $a++){
    if(strstr($data["content"], "[gallery$a]")){
preg_match("/(\[([\w]+)\])(.*?)(\[\/\\2\])/", $data["content"], $matches);
    $var = explode(",", $matches[3]);
    $data["content"] = str_ireplace($matches[3], showGallery1("".$var[0]."", "".$var[1]."", "".$var[2]."", "".$var[3]."","".$var[4].""), $data["content"]);
    $data["content"] = str_ireplace("[gallery$a]","", $data["content"]);
    $data["content"] = str_ireplace("[/gallery$a]","", $data["content"]);
}
}

nielle læg et svar så får du pointen for din indsats, tak for hjælpen.

Kim
Avatar billede nielle Nybegynder
21. januar 2008 - 19:45 #13
Oki :^)
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