今天做sitemap.xml.找了个国外的网站,http://www.freesitemapgenerator.com/这个可以生成5000条数据,以前找那个只能生成500条。但是,生成的xml标签中有些是没有用的,如图:
于是想到了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,如需转载请自行联系原作者