我创建了一个函数,它基本上将文档中的一些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 有关,因为它使用相同的文件,文件大小不会更改为新编辑的长度,因此它会切断结束,因为文件大小比编辑一次后的旧文件大小。我希望对某人有意义大声笑 - 我很累......
答案 0 :(得分:0)
如果有人真正关心这里是我采取的解决方法。
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]);
// -----[my solution]
$co = 0;
foreach ($old_var as $value)
{
$expl[$old_var[$co]] = $new_var[$co]; // changed selected variable.
$co++;
}
// -----[end my solution]
$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);
}
将所有变量放入数组中,以便 $ intvar (是要更改的变量)和 $ Vars (新变量)
现在你只需要调用一次该函数。
editvar($root, $intvar, $Vars);