url.txt文件中含有: 
http://mail.jxxm.com
http://mail.xinglongmuye.com/mail/postoffice/login.php
http://www.yny18.com
上面的三行内容,一行一个
现要再写一行内容到url.txt中,如果url.txt文件中有此内容,就不写,如果没有,就写入,怎么实现呀
多谢

解决方案 »

  1.   

    假如再写入一行“http://topic.csdn.net/u/20100227/11/e472c5e4-44be-4674-862f-43ebacf45e3f.html”,相当于向文本文件末尾添加数据,大概如下:
    #include <stdlib.h>
    #include <stdio.h>
    void main()
    {
    FILE *fp;
    char s[]="http://topic.csdn.net/u/20100227/11/e472c5e4-44be-4674-862f-43ebacf45e3f.html";if((fp=fopen("url.txt","a"))==NULL)
    {
    printf("can not open this file\n");
    exit(0);
    }fprintf(fp,"%s\n",s);
    fclose(fp);}
    不太清楚如何判断重复,仅供参考……
      

  2.   

    多谢大家
    如果url.txt文件中有此内容,就不写,如果没有,就写入,怎么实现呀 (用php代码)
      

  3.   

    发了两个一样的帖? 那我也再发一遍<?php 
        $url = "http://www.baidu.com";
        
        $handle = fopen('url.txt','a+');
        if($handle){
            while (!feof($handle)){
                $content = fgets($handle);
                if($content == $url){
                    echo '已存在该内容';
                    return false;
                }
            }
            
            if(fwrite($handle,"\r\n".$url ) === false){
                echo '写入失败';
                return false;
            }else{
                echo '写入成功';
                return true;
            }
            
        }
    ?>
      

  4.   

    我的想法是<?php$in_content = "要写进去的内容";//多条的情况下可以用数组//打开文件
    $file_content = file("文件");
    $num = count($file_content);
    if($num == 0){
       //写进文件
    } else {
      //判断$in_content是否在$file_content 里面
      //如果在就不写,否则写进文件}
    //关闭文件?>
      

  5.   

    可以试试一次读入全部,file_get_contents
    然后strpos检测待加入的字符串是否存在。不存在就附加到读出来的字符串最后,然后file_put_contents
      

  6.   

    程序速度之类的我不懂,这个应该能用了。
    <?php
    $url = "http://www.baidu.com";$content = file_get_contents('C:/Users/alsove/Desktop/url.txt');$preg[0] = "/\./";
    $preg[1] = "/\//";
    $replace[0] = "\\.";
    $replace[1] = "\\/";
    $url2 = preg_replace($preg,$replace,$url);preg_match("/\n/",$content,$arr);
    $reg = isset($arr[0])?"/".$url2."\n|\n".$url2."/":"/".$url2."/";preg_match($reg,$content,$arr2);
    if(!isset($arr2[0])){
    $content.=$url."\n";
    file_put_contents('C:/Users/alsove/Desktop/url.txt',$content);
    }?>
      

  7.   

    好像这种方法更好一点。
    <?php
    $url = "http://www.baidu.com";
    $content = file_get_contents('url.txt'); /*取得文件内容*/$arr = explode("\n",$content); /*将文件内容打散为数组*/
    $arr_leng =  count($arr);
    $donthave = true;/*一旦在文件内发现与$url相同的内容,就将$donthave设为false并退出循环*/
    for($i=0;$i<$arr_leng;$i++){
    if($arr[$i]==$url){
    $donthave = false;
    break;
    }
    }if($donthave == true){
    $content.=$url."\n";
    file_put_contents('url.txt',$content);
    }
    ?>
      

  8.   

    楼上的,file("url.txt")就是把文件内容读到数组里面的。
      

  9.   

    按行取效率有点慢,不如全部读取完,直接strpos()进行比接。
      

  10.   

    file_get_contents取得全部内容,然后使用strpos判断是否存在,不存在则加一行。存在则放弃
      

  11.   

    要是不一行一行取的话,
    碰到http://www.baidu.com/s?http://www.abc.com这种情况怎么办?
      

  12.   

    function wurlTxt($url){
      if(!in_array($url,file("url.txt"))){
         @file_put_contents('url.txt',@file_get_contents('url.txt').$url."\r\n");
      }
    }