如何将JS/HTML代码评估后存入PHP变量而非直接输出?
解决方法
你可以利用PHP的输出缓冲控制来捕获paypal.php执行后的内容,避免直接输出到浏览器,具体实现如下:
- 开启输出缓冲:调用
ob_start(),后续所有输出(包括PHP执行后生成的HTML/JS)会暂时存入内存缓冲,不会直接发送给浏览器。 - 执行目标文件:用
include或require加载paypal.php,文件内的PHP代码会正常执行,生成的内容会被缓冲捕获。 - 提取缓冲内容:调用
ob_get_clean(),将缓冲中的内容提取到变量中,同时关闭输出缓冲。
具体代码示例
// 开启输出缓冲 ob_start(); // 执行paypal.php,所有输出被缓冲捕获 include 'paypal.php'; // 获取缓冲内容并赋值给变量,同时关闭缓冲 $paypalContent = ob_get_clean(); // 此时$paypalContent已存储执行后的完整内容,可用于后续处理 // 比如后续需要输出时,再执行 echo $paypalContent;
关于之前方法的问题
你之前用eval的方式,本质还是让PHP执行代码后直接输出内容到浏览器,没有对输出做拦截。而输出缓冲相当于给输出加了“拦截器”,把原本要直接发送的内容暂存起来,方便后续灵活处理。
另外,尽量避免用eval加载文件内容——它存在安全风险(若文件内容被篡改,可能执行恶意代码),用include/require是更安全、规范的做法。
内容的提问来源于stack exchange,提问作者Abid
相关产品推荐
相关产品推荐

