我制作了一个函数,它基本上分离出文档上的一些 php 变量,然后在更改后将它们重新组合在一起。
如果我调用该函数一次运行良好,但是当我运行它两次时,我会切断最后一段。每次切断的数量也不一样。
我想知道这是否有任何原因。
function editvar($filename, $old_var, $new_var)
{
$tmp = fopen($filename, "r");
$content=fread($tmp,filesize($filename));
fclose($tmp);
$ex = explode('<!---->', $content);
$expl = $ex[0];
$expl = explode('"', $ex[0]);
$expl[$old_var] = $new_var; // changed selected variable.
$ii = 0;
$ex[0] = "";
foreach($expl as $value) {
$ex[0] .= $expl[$ii];
if ($ii < count($expl) - 1)
{
$ex[0] .='"';
}
$ii++;
}
$ii = 0;
$new_content = "";
foreach($expl as $value)
{
$new_content .= $ex[$ii];
if ($ii < count($ex) - 1)
{
$new_content .= '<!---->';
}
$ii++;
}
$tmp = fopen($filename, "w");
fwrite($tmp, $new_content);
fclose($tmp);
}
好吧,它开始像:(在文档的底部)
<?php include_once "../../foo/foo.php"; ?>
并最终像:(经过不止一个电话)
<?php include_once "../../fo
调用函数
editvar($root, 1, $var1);
editvar($root, 3, $var2);
它是否与fread有关系,因为它使用相同的文件文件大小不会更改为新的编辑长度,因此它会切断结尾,因为文件大小在编辑一次后大于旧文件大小。我希望这对某人有意义,哈哈-我很累..