PHP-检查函数是否包含

PHP-检查函数是否包含,php,Php,我想检查函数是否包含名为$marker的变量 这就是我想做的: if(function('head') contains '$marker') { return true; } 有什么办法吗?嗯。。。它不是内置在PHP中的,坦率地说,更改文件会更好,但是出于科学原因,我为它写了一个检查。它在每次函数调用时都会获取文件名的内容,因此,如果您多次使用它,我建议您将文件内容存储在另一个变量中,但无论如何,这将为您提供如何执行该操作的函数视图: <?php function test

我想检查函数是否包含名为
$marker
的变量

这就是我想做的:

if(function('head') contains '$marker') {
     return true;
}

有什么办法吗?

嗯。。。它不是内置在PHP中的,坦率地说,更改文件会更好,但是出于科学原因,我为它写了一个检查。它在每次函数调用时都会获取文件名的内容,因此,如果您多次使用它,我建议您将文件内容存储在另一个变量中,但无论如何,这将为您提供如何执行该操作的函数视图:

<?php

function test() {   $marker;}

function negativeTest() {
    $noMarker;
}

function checkFunction($function, $variable, $filename) {
    $file = file_get_contents($filename);
    preg_match_all("/function\s+([a-z0-9_-]+)\s*\(.*?\)\s*\{((\n|.)*?)\}/im",$file,$matches);
    for ($i = 0; $i < count($matches[1]); $i++) {
        if ($matches[1][$i] == $function && strpos($matches[2][$i], $variable) != false) {
            return true;
        }
    }
    return false;
}

echo checkFunction("test","\$marker","index.php");

?>


为什么?这样做没有真正的理由?函数中使用的变量应仅与函数本身相关。你到底想达到什么目的?简短的回答是“不”。你没有理由需要这样一个功能,除了一个设计糟糕的程序。你到底想要实现什么?不管是什么,肯定有其他(“正确的”)方法可以做到这一点。@MarkBaker我正试图阻止一些来自插件的垃圾邮件,我不想修改插件文件本身,因为一旦它们更新,垃圾邮件就会回来。@J.Doe spam怎么做?无论如何,变量名是否重要?如果不检查函数本身,就不可能知道函数内部使用了哪些变量名,而且全局作用域与PHP中的函数作用域是隔离的,因此内部使用的变量名不会影响外部使用的变量名。我从来没有这样做过。我以前从未想过这个编程问题,所以我决定写一些能做到这一点的东西。(而且,不,我不会使用它)。您可能会更好地使用AST(假设您知道函数定义的文件名),或者通过使用反射(可以直接使用函数而不需要知道文件名)冷静地思考,您可以发布一个如何在AST中执行此操作的示例吗?