PHP字符串写入文件方法及写入代码仅显示值的问题求助
解决PHP文件写入时变量被解析的问题
兄弟,太懂你卡了好几个小时的那种挫败感!咱们直接抓核心问题来解决:
你遇到的两个关键问题:
- 你用了HTML实体转义(
<)代替真实的<,导致写入的不是有效的PHP标签 - 字符串中的
$id被PHP当成变量解析了,所以最终写入文件的是变量的值15,而不是$id = 15;这个代码本身
修复方案
我们需要保证两个点:一是写入正确的PHP标签,二是让字符串里的$id不被解析,原封不动写入文件。这里有两种常用方法:
方法1:使用单引号包裹字符串(推荐)
单引号在PHP里不会解析内部的变量,所以直接把你要写入的PHP代码用单引号包起来就行:
if (file_exists($file)) { $newfile = "../".$low.$row["page_id"].".php"; $url = "../".$low.$row["page_id"]; $create = fopen($newfile,"w"); // 单引号包裹,内部的$id不会被解析,直接写入原内容 $addfile = '<?php include "../page.php"; $id = 15; ?>'; $write = fwrite($create, $addfile); fclose($create); // 一定要记得关闭文件资源! }
方法2:双引号内转义$符号
如果你习惯用双引号,只需要把$前面加个反斜杠\,告诉PHP这不是变量,只是普通字符:
if (file_exists($file)) { $newfile = "../".$low.$row["page_id"].".php"; $url = "../".$low.$row["page_id"]; $create = fopen($newfile,"w"); // 用\转义$,避免变量解析 $addfile = "<?php include '../page.php'; \$id = 15; ?>"; $write = fwrite($create, $addfile); fclose($create); }
额外提醒
- 别忘调用
fclose($create):打开文件后如果不关闭,可能会导致文件锁定或者内容写入不完整的问题 - 检查文件权限:确保你的脚本有目标目录的写入权限,不然也会导致写入失败
内容的提问来源于stack exchange,提问作者alertme
相关产品推荐
相关产品推荐

