我有这个testfile.php,我尝试通过包含PHP-Tags的代码块 但是当我这样做时,结果将最终发表评论 我还没有在文档中找到它,显然PHP在Apache上运行,否则我不会让这个类工作。
我想知道:为什么代码已被注释, 如何以适当的方式解决?
更新:
使用eval()Asad Raza提供了一个工作解决方案,但它正在使用eval()。
eval("?>". $string);
我有围绕代码的HTML(混合的php-html页面) 在现实生活中,我从数据库表中获取整个批次。
我需要完全按照原样通过它,并且eval不会被认为是最好的选择,因为我认为应该有一个更清洁的解决方案。
结果不应该是纯文本的简单打印,而是执行的代码,例如就像一个类的实例化一样。
<?php
class Test
{
public function __construct()
{
}
public function getPHPCodeOne()
{
return '<?php echo "Hi, I want to be PHP-Code"; ?>';
}
public function getPHPCodeTwo()
{
return '<?php $fooClass = new className(); echo $fooClass->barMethod(); ?>';
}
}
$test = new Test();
echo $test->getPHPCodeOne();
echo $test->getPHPCodeTwo();
会导致
<!--?php echo "Hi, I want to be PHP-Code"; ?-->
<!--?php $fooClass = new className(); echo $fooClass--->"barMethod(); ?>"
但应该导致:
Hi, I want to be PHP-Code
I'am the Output of my flexible fooClass->barMethod.
答案 0 :(得分:3)
您可以在此
中使用htmlentitieshtmlentities - 将所有适用的字符转换为HTML实体
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: theLocation.value,
radius: radius,
type: ['restaurant'],
openNow: true,
minPriceLevel: minprice
}, yourCallback);
甚至是htmlspecialchars这个
htmlspecialchars - 将特殊字符转换为HTML实体
type
查看the difference between htmlentities and htmlspecialchars
因为您想要 执行 您的代码字符串,您需要使用eval
代码不得包装在打开和关闭PHP代码中,即 &#39;回声&#34;嗨!&#34;;&#39;必须通过而不是&#39;。它是 仍然可以离开并重新进入PHP模式虽然使用 适当的PHP标签
所以你想要评估你的代码字符串就是删除前导return htmlentities('<?php echo "Hi, I want to be PHP-Code"; ?>');
开头标记,无论是从字符串中删除它,还是在你评估这个字符串时修剪它。
return htmlspecialchars('<?php echo "Hi, I want to be PHP-Code"; ?>');
这将输出:
嗨,我想成为PHP-Code barMethod就在这里
答案 1 :(得分:1)
如果您的代码是
public function getPHPCode()
{
$date = date('Y-m-d');
return '<?php echo "Hi, I want to be PHP-Code $date"; ?>';
}
如果你想从字符串执行你的PHP代码,并希望得到像这样的结果
Hi, I want to be PHP-Code 2017-9-6
然后使用eval
$test = new Test();
$string = $test->getPHPCode();
eval($string); // output Hi, I want to be PHP-Code 2017-9-6
如果您希望您的字符串在浏览器上完全正确,例如输出(用于教程)
$test = new Test();
$string = $test->getPHPCode();
echo htmlentities($string); //output => <?php echo "Hi, I want to be PHP- $date"; ?>
更新:
$test = new Test();
$string = $test->getPHPCode();
eval("?>". $string ."<?php");
// end php tag ?> so current php close..
//Then PHP start <?php and end ?> from your string.
// then now again start <?php so your normal code will work.
It will generate code like this, in your case.
<?php
$test = new Test();
//your some code
?><?php echo "Hi, I want to be PHP-Code"; ?><?php
//your more code
?>
无需像
那样回应echo eval("?>". $string ."<?php"); // here echo is wrong.if echo inside string.