php处理文件,一行一行的读取,并且把没用的行删除。

今天做sitemap.xml.找了个国外的网站,http://www.freesitemapgenerator.com/这个可以生成5000条数据,以前找那个只能生成500条。但是,生成的xml标签中有些是没有用的,如图:php处理文件,一行一行的读取,并且把没用的行删除。

于是想到了php处理文件,一行一行的读取,并且把没用的行删除。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
    set_time_limit(0);
    $file=fopen('sitemap.xml','r');
    while (!feof($file)){
      $line fgets($file);
      //$arr[]=$line;
      $reg="/<priority>|<lastmod>|<changefreq>/";
 
     if(!preg_match($reg,$line)){
        $arr[]=$line;
 
     }
       
 
      // if()
      // echo $line;
    }
    fclose($file);
    //var_dump($arr);
    $str = implode("\r\n"$arr);
    file_put_contents("1.xml"$str);

但是登录一会公司的又让改,说是loc中不能还有?号。我又想到直接写个循环不就行了,但是苦逼的时间开始了。见http://ningyuqiao.blog.51cto.com/5581274/1616984

贴代码吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php  
set_time_limit(0);
$xml_str file_get_contents("1.xml"); 
$doc = DOMDocument::loadXML($xml_str);  
  
 
$root $doc->documentElement;
$items=$root->getElementsByTagName('url');
// echo $length;
// die();
 
for ($i = 0; $i $items->length; $i++) {
    // echo $items->item($i)->nodeValue . "\n";
    $url $items->item($i)->nodeValue;
    $reg="/\?/";
    if(preg_match($reg,$url)){
        echo $url;
        $root->removeChild($items->item($i));
 
    }
    // sleep(3);
}
$doc->formatOutput = true;
$doc->saveXML();
$doc->save("1.xml");

最终搞定了,心理挺开心的,分享给大家。





      本文转自ning1022 51CTO博客,原文链接:http://blog.51cto.com/ning1022/1616986,如需转载请自行联系原作者