PHP使用';eval';作为函数(获取返回值)


PHP Use 'eval' As a Function (Get Return Value)

背景

我正在使用4D服务器。4D有一个内置的PHP处理器,但方式很奇怪。我必须在我的网页中启动一个内联4D脚本,然后我必须调用PHP Execute,并给它一个.php文件的路径。

4D脚本

C_TEXT($result)
C_BOOLEAN($isOK)
$isOK:=PHP Execute("C:''php''myPHPFile.php";"my_function";$result)
ALERT($Result)

myPHPFile.php

<?php
    function my_function() {
        return 'Hello World';
    }
?>

目标

我想能够在我的网站上写下这篇文章:

<?php echo 'Hello World'; ?>

并进行处理。我几乎想明白了。如果我首先通过服务器代码(4D可以这样做(将其转换为:

C_TEXT($result)
C_BOOLEAN($isOK)
$isOK:=PHP Execute("";"echo 'Hello World'";$result)
ALERT($Result) 

您应该能够在没有.php文件的情况下直接运行PHP本机函数。你会认为这会奏效的。事实证明不是。

所以我尝试了这个:

C_TEXT($result)
C_BOOLEAN($isOK)
$isOK:=PHP Execute("";"echo";$result;"Hello World") // I can send parameters
ALERT($Result) 

仍然不起作用。事实证明,我需要使用一个函数来评估代码。

C_TEXT($result)
C_BOOLEAN($isOK)
$isOK:=PHP Execute("";"eval";$result;"return 'Hello World;'") // I can send parameters
ALERT($Result) 

应该将"return 'Hello World';"发送到eval()。这仍然不起作用,因为我发现eval()实际上不是一个函数。所以,在经历了这么多背景之后,我需要知道的是:

问题

PHP中是否有一个本机函数可以这样工作:

$evaulatedCode = eval($unEvaluatedCode);

您非常接近,return语句中的分号放错了位置。试试这个:

$isOK:=PHP Execute("";"eval";$result;"return 'Hello World';")