php写一个附加文件,重复不需要的

时间:2016-07-06 07:49:01

标签: php html

我有以下脚本,我从表单(操作)调用以获取表单中的给定数据。但是当我尝试将此表单数据写入文件时。它似乎重演了,我无法找出代码中的错误。

在这个例子中,我清理了“testfile.txt”。所以它有一个新的开始。在HTML表单中,我输入了1212 aa的邮政编码 然而,作为一个“奖金”,我获得约15倍的邮政编码。

<?php

    $myfile = fopen("testfile.txt", "a") or die("Unable to open file!");
    $txt =  "postcode" . $_POST['entry_508642568'];
    echo $txt;
    fwrite($myfile, "\n". $txt);
    fclose($myfile);

?>

输出:

postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode
postcode1212 aa
postcode
postcode
postcode

2 个答案:

答案 0 :(得分:2)

看起来某种形式多次提交表单。在添加到文件之前,先修复它或尝试检查输入。

$original_data = array(
    'item_name1' => 'PCC',
    'item_name2' => 'ext',
    'item_number1' => '060716113223-13555',
    'item_number2' => '49101220160607-25222)',
);

$redacted_data = array();
foreach ($original_data as $key => $row) {
    if (preg_match('/^(.+)(\d+)$/u', $key, $matches)) {
        $redacted_data[$matches[1]][$matches[2]] = $row;
    } else {
        $redacted_data[$key][] = $row;
    }
}
var_dump($redacted_data);

答案 1 :(得分:1)

上面的答案很好,但您也可以使用标志来处理将字符串写入文件。

<?php

    if( !empty($_POST['entry_508642568']) ) {

        $file = 'testfile.txt';
        $txt =  "postcode" . $_POST['entry_508642568'];
        file_put_contents($file, $txt, FILE_APPEND | LOCK_EX);
        //LOCK_EX flag to prevent anyone else writing to the file at the same time
    }

?>