Amar Syla
Amar Syla

Reputation: 3653

Run PHP and HTML code from a string

I have a string stored in a variable in my php code, something like this:

<?php

$string = "

<?php $var = 'John'; ?>

<p>My name is <?php echo $var; ?></p>

";

?>

Then, when using the $string variable somewhere else, I want the code inside to be run properly as it should. The PHP code should run properly, also the HTML code should run properly. So, when echoing the $string, I will get My name is John wrapped in a <p> tag.

Upvotes: 0

Views: 1935

Answers (3)

Bogdan Kuštan
Bogdan Kuštan

Reputation: 5577

You don't want to do this. If you still insist, you should check eval aka evil function. First thing to know, you must not pass opening <?php tag in string, second you need to use single quotes for php script You want to evaluate (variables in single quotes are not evaluated), so your script should look something like:

<?php

$string = '
<?php $var = "John"; ?>
<p>My name is <?php echo $var; ?></p>
';
// Replace first opening <?php in string
$string = preg_replace('/<\?php/', '', $string, 1); 
eval($string);

However, this is considered very high security risk.

Upvotes: 1

agustinnriquelme
agustinnriquelme

Reputation: 33

You should define $var outside the $string variable, like this

<?php

$var="John";
$string = "<p>My name is $var</p>";

?>

Or you can use . to concatenate the string

 <?php

    $var="John";
    $string = "<p>My name is ".$var."</p>";

    ?>

Both codes will return the same string, so now when doing

<?php
    echo $string;
?>

You will get <p>My name is John</p>

Upvotes: 0

Marijn Rutten
Marijn Rutten

Reputation: 36

So if I'm right, you have the $var = 'John'; stored in a different place.

Like this:

<?php $var = 'John'; ?>

And then on a different place, you want to create a variable named $String ? I assume that you mean this, so I would suggest using the following:

<?php
    $String = "<p>My name is ".$var." </p>";
    echo $String;
?>

Upvotes: 1

Related Questions