读取使用脚本编辑的文件时清空字符

时间:2012-09-02 02:13:54

标签: php character whitespace

我有一个简单的格式化/编写脚本,但每当我保存并阅读它(在<textarea> HTML标签内写入)时,我会得到一些奇怪的空字符,比如当你按下Tab键时文本编辑器,在实际文本之前和之后。如果我用文本编辑器打开写入的文件,那么只有文本。这是我的脚本(仅限相关代码):

<?php 
$text = $_POST["info"];
$text = str_replace("\n", "<br />", $text);
$text = preg_replace('/\*([^\*]+)\*/', '<b>\1</b>', $text);
if ($_POST["updateContato"]="updateContato") {
    $file = fopen("./pages/contato.php","w");
    fwrite($file, $text);
    fclose($file);
}
?>
<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth">
    <?php include "./pages/contato.php";?>
    </textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>

1 个答案:

答案 0 :(得分:0)

如果您使用此代码呈现<textarea>的内容,则应将其放在开始和结束标记之间,而不添加任何标签,内容和标记之间的新行或空格

<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth"><?php include "./pages/contato.php";?></textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>

另一方面,您是否使用return关键字从"./pages/contato.php"返回内容?

如果不这样做,include "..."不是用来返回文本数据的好选择。 而是将您的数据保存到常规文件(在非公共文件夹中)而不是包含它,请使用file_get_contents()阅读:

<form action="./?painel" method="post">
    <textarea name="info" class="fullwidth"><?php echo file_get_contents("./pages/contato.php"); ?></textarea> <br />
    <input type="checkbox" name="updateContato" value="updateContato" checked style="display:none;height:0;width:0;" />
    <input type="submit" value="Salvar" />
</form>

另一方面,调用include "some_script.php"实际上会执行脚本,如果你像在你的例子中那样在脚本中写东西,那里如果您向公众或客户提供此功能(或者甚至自己使用此功能),则很可能出现代码/解析错误并构成严重的安全风险。即使你在被调用脚本中使用return,它仍然是重要的安全漏洞。

我强烈建议您改用file_get_contents()