---
title: "Exekvera PHP-kod som är lagrad i en databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/173104-exekvera-php-kod-som-är-lagrad-i-en-databas"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "jme"
published: "2008-08-01T08:56:58.000Z"
updated: "2008-08-01T10:10:33.000Z"
replies: 8
views: 538
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/173104-exekvera-php-kod-som-är-lagrad-i-en-databas"
---

# Exekvera PHP-kod som är lagrad i en databas

## #1 — jme, 2008-08-01T08:56Z

Hej.

Kan man på nåt sätt enkelt exekvera on the fly PHP-kod som är lagrad i en databas, utan att först spara den i filsystemet och sedan köra include?

Det är inte bara ren PHP-kod utan även HTML-kod.

Permalänk: https://www.webforum.nu/p/173104

## #2 — SPiN, 2008-08-01T09:04Z

<https://www.php.net/eval>

Om det är blandat med HTML så se bara till att ha inneslutande PHP-taggar i koden som ska evalueras.

Permalänk: https://www.webforum.nu/p/2128087

## #3 — jme, 2008-08-01T09:10Z

eval verkar inte gilla { och }.

Permalänk: https://www.webforum.nu/p/2128091

## #4 — SPiN, 2008-08-01T09:28Z

Hm. Det beror ju till en viss del på hur informationen i databasen ser ut, men just måsvingar ska eval() klara av.

Exempel:

```php
<?php
$a = "wee!";
$b = "if(\$a == 'wee!') { echo '\$a är wee!'; } else { echo '\$a är inte wee!'; }";

echo $b;
eval($b);
?>
```

Output:

```
if($a == 'wee!') { echo '$a är wee!'; } else { echo '$a är inte wee!'; }
$a är wee!
```

Permalänk: https://www.webforum.nu/p/2128096

## #5 — jme, 2008-08-01T09:34Z

Hmm, jag testade med en foreach-loop och då visades sista } som klartext. Måste koden vara på en rad då isf?

Loopen jag testade med var utspritt på flera rader.

Permalänk: https://www.webforum.nu/p/2128098

## #6 — jme, 2008-08-01T09:44Z

```php
<?php
$arr = array(1,2,3);

foreach($arr as $el)
{
echo $el . "<br/>";
}

?>
```

resulterar i:

1
2
3
"; } ?\>

Permalänk: https://www.webforum.nu/p/2128101

## #7 — SPiN, 2008-08-01T09:45Z

Nej, det måste inte vara på en rad. Följande fungerar också utmärkt:

```php
<?php
$a = array("ett", "tva", "tre");
$b = "foreach(\$a as \$c) {\n
	echo \$c . '<br />';\n
      }";

echo str_replace(array("<", ">"), array("&lt;", "&gt;"), $b) . "<br />";
eval($b);
?>
```

Output:

```
foreach($a as $c) { echo $c . '<br />'; }
ett
tva
tre
```

Kan du visa kodsnutten som inte fungerade att evaluera?

Permalänk: https://www.webforum.nu/p/2128103

## #8 — SPiN, 2008-08-01T09:58Z

> **jme skrev:**
>
> ```php
> <?php
> $arr = array(1,2,3);
> 
> foreach($arr as $el)
> {
> echo $el . "<br/>";
> }
> 
> ?>
> ```
>
> 
> 
> resulterar i:
> 
> 1
> 2
> 3
> "; } ?\>

Det är för att eval() är redan i "PHP-mode". Med andra ord ska \<?php och ?\> bort från den kodsnutten.

Om du vill skriva HTML utanför PHP-taggarna kan det se ut så här:
a.txt:

```
?>
<h1>
<?php
$normalMode = "Så här ser det ut i vanligt läge.";
$h1Mode = "Så här ser det ut i rubrikläge.";

echo $h1Mode;
?>
</h1>
<?php
echo $normalMode;
```

Notera att jag stänger PHP-läget direkt i filen, och öppnar det igen i slutet.

evaluate.php:

```php
<?php
$b = file_get_contents("a.txt");

eval($b);
?>
```

Output:

```
<h1>Så här ser det ut i rubrikläge.</h1>
Så här ser det ut i vanligt läge.
```

Permalänk: https://www.webforum.nu/p/2128105

## #9 — jme, 2008-08-01T10:10Z

Ok, tack!

Permalänk: https://www.webforum.nu/p/2128108

---

Tråden på webben: https://www.webforum.nu/amne/php/173104-exekvera-php-kod-som-är-lagrad-i-en-databas
