php執行js檔案
阿新 • • 發佈:2018-12-18
/** * 執行js 僅在node環境下 * 引數 jsFile js檔名 * 引數 v 要傳遞的引數 * 引數 path js目錄 * by:LingMax */ function js_node($jsFile,$v,$path = './JsDecrypt/') { $cmd = 'node "' . realpath($path.'node_api.js'); $cmd .= '" "' . realpath($path.$jsFile).'" "'.$v.'"'; //echo $cmd.'<br>'; return exec($cmd); } /** * 執行js 僅在win平臺下 * 引數 jsFile js檔名 * 引數 exec 要傳遞的引數 * 引數 path js目錄 * by:LingMax * 注意:需要開啟該擴充套件外掛 extension=php_com_dotnet.dll */ function js_run($jsFile,$v,$path = './JsDecrypt/') { $oScript = new \COM("MSScriptControl.ScriptControl");#建立com元件 $oScript->Language = "JavaScript";#設定指令碼型別 $oScript->AllowUI = false;#不顯示提示框 $code = file_get_contents($path.$jsFile); #編碼自動轉換 $bm = 'GB2312'; $encode=mb_detect_encoding($code,array("ASCII","UTF-8","GB2312","GBK","BIG5")); if ($encode != $bm and $encode !="GB2312"){ $code=mb_convert_encoding($code,$bm,$encode); } $oScript->AddCode($code);#新增js程式碼 只支援gbk格式文字 return $oScript->Run("eval", 'tmd("'.$v.'")');#執行程式碼 }
node_api.js 檔案內容如下
//console.log(process.argv);
require(process.argv[2]);//C://xx.js 絕對路徑
console.log(tmd(process.argv[3]));
qrl_fanzhoutech_com.js 檔案內容如下
function tmd(pwd) {
var a = 'aaa';
return pwd + a;
}
//相容node環境
if(typeof(global) != 'undefined'){
global.tmd = tmd;
}
node "C:\EXE\JsDecrypt\node_api.js" "C:\EXE\JsDecrypt\qrl_fanzhoutech_com.js" "222222"