Javascript 在文件中查找所有PHP函数
我想在一个文件中查找所有函数-这没有问题:Javascript 在文件中查找所有PHP函数,javascript,php,Javascript,Php,我想在一个文件中查找所有函数-这没有问题: preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData); 问题是,如果有Javascript函数,它们也会进入方案 甚至可以只获取PHP函数。 一个指标是-Tag,但我不知道如何只跟踪那些不被脚本-Tag包围的函数 谢谢大家! 我在写问题2秒钟后就有了这个想法 $data = file_get_contents($file); $data = preg_rep
preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData);
问题是,如果有Javascript函数,它们也会进入方案
甚至可以只获取PHP函数。
一个指标是
-Tag,但我不知道如何只跟踪那些不被脚本-Tag包围的函数
谢谢大家! 我在写问题2秒钟后就有了这个想法
$data = file_get_contents($file);
$data = preg_replace("/<script[^>]*>[\s\S]*?<\/script>/", "", $data);
preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData);
$data=file\u get\u contents($file);
$data=preg_replace(“/]*>[\s\s]*?/”,“”,$data);
preg\u match\u all(“/function[\s\n]+(\s+[\s\n]*\(/”,$data,$outputData);
只需删除所有的
-标签!
如果您以后需要它们,您还可以保存它们(而不是替换它们)并在以后添加它们
如果其他人也会有同样的问题!我在写问题2秒钟后就有了这个想法
$data = file_get_contents($file);
$data = preg_replace("/<script[^>]*>[\s\S]*?<\/script>/", "", $data);
preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData);
$data=file\u get\u contents($file);
$data=preg_replace(“/]*>[\s\s]*?/”,“”,$data);
preg\u match\u all(“/function[\s\n]+(\s+[\s\n]*\(/”,$data,$outputData);
只需删除所有的
-标签!
如果您以后需要它们,您还可以保存它们(而不是替换它们)并在以后添加它们
如果其他人也会有同样的问题!一个选项是在处理之前删除所有的..
标记,但这假设您将只在文件中直接包含这些标记中的JavaScript。如果您有一个函数或库为您生成HTML,您可以输出JavaScript代码而无需解释在你的PHP文档中有…
标记。问题是你正在使用模式匹配,这可能会导致一系列误报
要同时消除这些误报,可以使用来确定哪些函数是在PHP中定义的,哪些不是。一旦有了可能的函数名数组,请使用以下命令:
$data = file_get_contents($file);
$outputData;
$validMatches=array();
preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData);
foreach($outputData[1] as $match) {
$isValid=true;
try {
$reflection = new \ReflectionFunction($match);
} catch (\ReflectionException $e) {
$isValid=false;
}
if($isValid == true) {
$validMatches[]=$match;
}
}
这更为详细,但它将保证您将获得一个仅包含PHP函数名的列表。一个选项是在处理之前删除所有..
标记,但这假设您将仅在这些标记中直接在文件中包含JavaScript。如果您有一个函数或库为您生成HTML,则可能或者您可以在PHP文档中不显式地使用…
标记来输出JavaScript代码。问题是您使用的是模式匹配,这可能会导致一系列误报
要同时消除这些误报,可以使用来确定哪些函数是在PHP中定义的,哪些不是。一旦有了可能的函数名数组,请使用以下命令:
$data = file_get_contents($file);
$outputData;
$validMatches=array();
preg_match_all("/function[\s\n]+(\S+)[\s\n]*\(/", $data, $outputData);
foreach($outputData[1] as $match) {
$isValid=true;
try {
$reflection = new \ReflectionFunction($match);
} catch (\ReflectionException $e) {
$isValid=false;
}
if($isValid == true) {
$validMatches[]=$match;
}
}
这更为详细,但它将保证您只会得到一个PHP函数名列表。这将打开一个巨大的蜡球。有很多方法可以“隐藏”脚本标记。例如,有js生成js,您最终会得到像document.write(“”)这样的愚蠢事情
或
。祝你好运…@MarcB你是对的!它会变得一团糟-但幸运的是我找到了另一个解决方案。它似乎有效:-)无论如何,谢谢!这会打开一个巨大的蜡球。有很多种方法可以“隐藏”脚本标记。例如,有一种js可以生成js,你最终会得到像document.write(“”)这样的愚蠢事情
或
。祝你好运…@MarcB你是对的!它只会变得一团糟-但幸运的是我找到了另一个解决方案。它似乎有效:-)无论如何,谢谢!