本帖最后由 chnking123 于 2011-02-17 11:32:46 编辑

解决方案 »

  1.   

    方法一 : 不要用fopen 改用file_get_contents函数方法二 : 用正则把末尾可能多余的字符去掉preg_match('/(.*\?>)/is',$str,$match);
    print_r($match[1]);//查看源文件 可看到结果。
      

  2.   

            $static_newsID = $_GET['newsID'];        $static_newsUrl = "{$static_newsID}.php";                if ($handle = fopen($static_newsUrl, 'w')) {                //相关阅读                $interfixNews_content = '';                if (count($interfixNews['data']) != 0) {                        $interfixNews_content = '<dl class="rk"><dd class="xiang_g">相关阅读</dd>';                        for ($k = 0; $k < count($interfixNews['data']); $k++) {                                $interfixNews_newsid = $interfixNews['data'][$k]['newsid'];                                $interfixNews_title = str_replace("'", "\'", $interfixNews['data'][$k]['title']);                                $interfixNews_title_sub = str_replace("'", "\'", cutstr($interfixNews['data'][$k]['title'], 0, 50));                                $interfixNews_dateline = $interfixNews['data'][$k]['dateline'];                                $interfixNews_content .= '                                        <dd>·<a href="/'. $interfixNews_newsid .'.html" target="_blank" title="'. $interfixNews_title .'">'. $interfixNews_title_sub .'</a> '. $interfixNews_dateline .'</dd>';                        }                        $interfixNews_content .= '</dl>';                }                                $content = '<?php                        '. $interfixNews_content .'                        <input type="hidden" id="newsID" value="'. $static_newsID .'">\';?>';                                //写入、关闭文件                fwrite($handle, $content);                fclose($handle);
      

  3.   

    //写入、关闭文件 fwrite($handle, $content);  fclose($handle);
    改成:
    //写入、关闭文件
    if(preg_match('/(.*\?>)/is',$content,$match)){
      if(!empty($match[1])){
        $content = $match[1] ;
      }
    }
    fwrite($handle, $content);
    fclose($handle);
      

  4.   

    你的写法不严谨,如果像这种合成页面的写入,最好使用wb 这种二进制模式写入,对于fopen w型写入,实际上是文本模式的写入,不同的数据内码,可能会导致长度的判断不严谨,从而导致数据混乱
    建议用wb模式或直接使用 file_put_contents
      

  5.   

    试下两种方法:
    1、使用fopen($static_newsUrl, 'wb')来打开文件;
    2、使用c模式打开文件,代码如下:
    if ($handle = fopen($static_newsUrl, 'c')) {
    if (flock($fp, LOCK_EX)) {
    ftruncate($fp, 0);
    //...
    fwrite($handle, $content);
    flock($fp, LOCK_UN);
    } else {
    echo '无法锁定文件';
    }
    fclose($handle);
    }
      

  6.   

    恩,谢谢 apachectl,也谢谢大家!我这边改用wb模式了,看看要是还有问题再请教大家