使用fopen()创建.php文件时,$code内容被解析而非存为字符串的问题求助
解决PHP字符串被解析的问题
看起来你遇到的核心问题是**$code里的PHP代码被当作可执行逻辑处理,而非纯字符串写入目标文件**,另外代码里还有个小变量错误,我来一步步帮你搞定:
问题根源
- 你用双引号定义
$code,虽然双引号里的<?php标签本身不会被解析,但如果后续加入session相关变量,会被PHP自动解析替换;更关键的是你把文件句柄变量$fh误写成了$file,导致写入逻辑直接失效。 - 要把包含PHP标签的内容完整保存为纯字符串,最稳妥的方式是用单引号包裹字符串——PHP里单引号字符串不会解析任何变量或转义字符(除了单引号本身和反斜杠)。
修正后的代码
<a href=" <?php $fl = $p['n'] . ".php"; $fh = fopen($fl, 'w') or die("Can't create file"); if($fh) { // 用单引号包裹,确保内容完全以字符串形式保存 $code = '<?php // html and php combined code (the php is for sessions) ?>'; echo fwrite($fh, $code); // 修正变量:将$file改为$fh fclose($fh); // 同样修正文件句柄变量 } ?> "></a>
额外说明
如果后续$code里需要包含单引号,只需要在单引号前加反斜杠转义(比如'It\'s a test string');如果要加入动态变量,建议用字符串拼接或者sprintf函数,避免双引号带来的意外解析问题。
内容的提问来源于stack exchange,提问作者Ger
相关产品推荐
相关产品推荐

