我想檢查一個函數是否包含一個名爲$marker
的變量。PHP - 檢查函數是否包含
這就是我想要做的事:
if(function('head') contains '$marker') {
return true;
}
有沒有辦法做到這一點?
我想檢查一個函數是否包含一個名爲$marker
的變量。PHP - 檢查函數是否包含
這就是我想要做的事:
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");
?>
爲什麼?這樣做沒有真正的理由嗎?函數中使用的變量只應該在函數本身內部相關。你究竟在努力實現什麼? –
簡短答案是「否」。你沒有理由需要這樣的功能,除了設計不佳的程序。你想要達到什麼目的?不管它是什麼,肯定還有其他(「正確的」)方法來做到這一點。 – axiac
@MarkBaker我試圖阻止來自插件的一些垃圾郵件,我不想修改插件文件本身,因爲一旦它們更新,垃圾郵件就會回來。 –