Avatar billede hoppe11 Nybegynder
18. marts 2008 - 20:46 Der er 16 kommentarer og
1 løsning

gem string til eval()

hvordan gemmer jeg en string til senere eval()?

$str = '<div>/'.str_sec2time(%d)./'</div>',

echo eval($str);
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 21:01 #1
Øh - hvorfor?
Avatar billede hoppe11 Nybegynder
18. marts 2008 - 21:14 #2
fordi jeg vil gerne vide hvordan man anvender eval()
Avatar billede hoppe11 Nybegynder
18. marts 2008 - 21:15 #3
hov.. %d burde så lige være et integer :)
Avatar billede viper_killerguy Nybegynder
18. marts 2008 - 21:19 #4
eval("\$str = ".var_export($str));

så var_export() laver indholdet af $str om til noget parse-able.
Avatar billede dkfire Nybegynder
18. marts 2008 - 21:21 #5
Hvis den viste streng skal virke så tror jeg noget ala:

$str = '?><div><?php echo str_sec2time(%d); ?></div><?php';
echo eval($str);
Avatar billede jakobdo Ekspert
18. marts 2008 - 22:43 #6
Jeg tror:

str = '<div><?php echo str_sec2time(%d); ?></div>';
eller måske blot:
str = '<div><?php=str_sec2time(%d);?></div>';

er nok.
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 09:51 #7
kan det passe at jeg SKAL starte med at lukke php parseren og slutte med at starte den igen??

$str = '?><div class="comp"><?=str_sec2time(234)?></div><?';

ellers får jeg bare den her:

Parse error: syntax error, unexpected '<' in

ved kun at have:

$str = '<div class="comp"><?=str_sec2time(234)?></div>';
Avatar billede jakobdo Ekspert
19. marts 2008 - 10:09 #8
Der står dette i manualen:


code_str
    The code string to be evaluated. code_str does not have to contain PHP Opening tags. A return statement will immediately terminate the evaluation of the string .
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 10:29 #9
som på dansk betyder? :)
Avatar billede jakobdo Ekspert
19. marts 2008 - 10:43 #10
code_str does not have to contain PHP Opening tags. = code_str behøver ikke indeholde PHP Åbnings-tag. (<?php/<? og ?>)
Avatar billede dkfire Nybegynder
19. marts 2008 - 10:45 #11
Grunden til at man i dit tilfælde starter med at lukke php, skyldes at du starter med noget html som gerne skal udskrives. Og da du ikke har skrevet echo eller print, så skal det sættes uden for php ligsom man vil gøre det vil en hver anden php fil.
Alternativt kan du måske:

$str = 'echo "<div>".str_sec2time(%d)."</div>";';

Det brude kunne klares.
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 11:30 #12
dkfire

smid et svar og tak for hjælpen..

tror jeg overså dit første svar :)
Avatar billede dkfire Nybegynder
19. marts 2008 - 12:00 #13
Jeg ligger et svar.
Men pas meget på med eval. Du skal være HELT sikker på hvad du kører igennem eval, ellers er din server rigtig meget åben.
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 12:17 #14
ja, men det er også helt ufarligt hvad jeg kører igennem, som noget string formattering :)
Avatar billede erikjacobsen Ekspert
19. marts 2008 - 12:46 #15
... men det vil måske også betyde, at du slet ikke har brug for "eval" ...
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 13:35 #16
jeg vil ikke afvise det kan gøre anderledes..

det er kun i et enkelt tilfælde det bliver brugt, og kan ikke rigtig se bedre løsninger

$print_var_arr = array(
    'end' => '?><div class="comp"><?=str_sec2time(%s)?></div><?',
    'rating' => '?><div style="padding:2px 0 2px 0"><?=str_rating(%s)?></div><?',
    'bpm' => '?><div class="comp">%s</div><?'
    );

følgende bliver brugt i en løkke hvor, hvor der er 3 valgfrie pladser og hvor mulighederne er i $print_var_arr
echo eval(sprintf($print_var_arr[$row_print['set_print_var2']], $row[$row_print['set_print_var2']]));
Avatar billede hoppe11 Nybegynder
19. marts 2008 - 13:38 #17
altså en løkke på op til 7 hvor der så i hver er 3 frie pladser med count($print_var_arr) i hver
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