从字符串运行PHP和HTML代码

时间:2015-01-24 13:10:04

标签: php html

我的php代码中有一个存储在变量中的字符串,如下所示:

<?php

$string = "

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

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

";

?>

然后,当在其他地方使用$ string变量时,我希望里面的代码能够正常运行。 PHP代码应该正常运行,HTML代码也应该正常运行。因此,当回显$ string时,我会将My name is John包裹在<p>标记中。

3 个答案:

答案 0 :(得分:1)

所以,如果我是对的,你有$ var ='John';存放在不同的地方。

像这样:

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

然后在另一个地方,你想创建一个名为$ String的变量? 我认为你的意思是这个,所以我建议使用以下内容:

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

答案 1 :(得分:1)

你不知道该怎么做。如果您仍然坚持,则应检查eval又名evil功能。首先要知道的是,你不能在字符串中传递开放的<?php标签,第二,你需要为php脚本使用单引号你想要评估(单引号中的变量不被评估),所以你的脚本应该看起来像:

<?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);

但是,这被认为是非常高的安全风险。

答案 2 :(得分:0)

你应该在$ string变量之外定义$ var,比如这个

<?php

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

?>

或者你可以使用。连接字符串

 <?php

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

    ?>

两个代码都会返回相同的字符串,所以现在执行

<?php
    echo $string;
?>

您将获得<p>My name is John</p>