douhua1890 2019-02-11 09:08
浏览 524
已采纳

如何检查txt文件中的重复内容?

I have a .txt file which contains objects on each line.Meaning the first line is "baby",second line "toddler",next line "dog" and the line after is "cat".

I want to be able to add objects into my txt file using php but i want to prevent duplicates.Somehow my codes only work for "dog".When i try to add "dog" it will say this object already exist but when i try "cat" / "baby" /"toddler" it still adds even though it is already in the list.

CODES

$check = false;
    if(isset($_POST['add'])){
        if($_POST['addLbl'] == ''){
            echo ' Please enter a label';
            $check = true;
        }
        else{
            $data = "
".$_POST['addLbl'];
            $file_lines = file('lbls/predefined_classes.txt');

            foreach($file_lines as $line){
                if($_POST['addLbl'] === $line){
                    $check = true;
                }
            }
            if($check === false){
                $ret = file_put_contents('lbls/predefined_classes.txt',$data,FILE_APPEND | LOCK_EX);
                    if($ret === false){
                        echo ' Unable to add.An error occurred.';
                    }
                    else{
                        echo ' Sucessfully added!';
                        $_POST['addLbl'] = '';
                    }
            }else{
                echo 'The label '.$_POST['addLbl'].' already exists.';
            }

        }

Txt File Content

  • 写回答

4条回答 默认 最新

  • doukefu1361 2019-02-11 09:20
    关注

    because you add list manualy and have white space in the end of each line add trim() function solve problem

    <?php
    
    $check = false;
    if(isset($_POST['add'])){
    
        if($_POST['addLbl'] == ''){
            echo ' Please enter a label';
            $check = true;
        }
        else{
            $data = "
    ".$_POST['addLbl'];
            $file_lines = file('lbls/predefined_classes.txt');
            foreach($file_lines as $line){
                if($_POST['addLbl'] === trim($line)){ // trim() added here
                    $check = true;
                }
            }
            if($check === false){
                $ret = file_put_contents('lbls/predefined_classes.txt',$data,FILE_APPEND | LOCK_EX);
                    if($ret === false){
                        echo ' Unable to add.An error occurred.';
                    }
                    else{
                        echo ' Sucessfully added!';
                        $_POST['addLbl'] = '';
                    }
            }else{
                echo 'The label '.$_POST['addLbl'].' already exists.';
            }
    
        }
    }
        ?>
    

    output test for cat :

    The label cat already exists.
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题