[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: sitemap save
715kg
Здравствуйте. Есть код который создает карту сайта.
Но проблема в том, что при обращении к файлу /sitemap.php
Он выводит все карту в окошко. Приходится самому копировать и вставлять в sitemap.xml все содержимое.

Подскажите как можно сделать чтобы при обращении к файлу, он не чего не выводил, а просто сохранял сам файл sitemap.xml в корневую папку. То есть туда, где сам лежит. Если файл sitemap.xml существует, перезаписывал бы его.

<?

$url="http://cs.j-frag.ru";

//Fetch the page using the CURL Library
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
curl_close ($ch);

//Print website information (optional)
print <<<END
<h1>Sitemap links Information for a given website</h1>
Website:
$url<br /><br />
END;


//Strip the Host name from the Url and echo it (used later)
preg_match('@^(?:http://)?([^/]+)@i',$url, $matches);
$host = $matches[1];
echo '<br />Host: '.$host;

//Take out the directory name of your url
if(strrpos($url, "/") > 10)
$root= substr($url,0,strrpos($url, "/"));
else $root= $url;
echo '<br />Root: '.$root;

//Create an array to save urls
$links=array();

//Strip all links from the page
preg_match_all('/<a href="(.*)"/U',$store, $matches, PREG_SET_ORDER);

//Loop inside the links and rebuild the corresponding full urls.
foreach ($matches as $val)
{

if(strpos($val[1],'#') === FALSE && strpos($val[1],'http://') === FALSE && strpos($val[1],'@') === FALSE)
if(!in_array(trim($val[1]),$links))
if(strpos(trim($val[1]),'/') == 0 && strpos(trim($val[1]),'/') !== FALSE)
$links[]='http://'.$host.trim($val[1]);
else
$links[]='http://'.$root.'/'.trim($val[1]);

}

$date=date('Y-m-d');


//Print all results inside a textarea box:
echo '<textarea rows="40" cols="120">';
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
'
;

//Loop inside all links and add them to the sitemap using a default priority as 0.9 and a default changefreq as daily.
foreach ($links as $val)
{

print "<url>
<loc>
$val</loc>
<lastmod>
$date</lastmod>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
"
;
}

print '</urlset>';
echo '</textarea>';
?>




Спустя 11 минут, 40 секунд (19.07.2012 - 10:56) nikolasline написал(а):
Да, вот пример создания и записи в файл

$fp = fopen('sitemap.xml', 'w');
fwrite($fp, $data);
fclose($fp);

Спустя 5 минут, 45 секунд (19.07.2012 - 11:02) 715kg написал(а):
Да, спасибо. Создает. Но sitemap.xml пустой.

Спустя 7 минут, 54 секунды (19.07.2012 - 11:10) 715kg написал(а):
Делаю так

$site=('2222222');

$fp = fopen('sitemap.xml', 'w');
fwrite($fp, $site);
fclose($fp);


Запись есть. А как запихнуть туда это?

//Print all results inside a textarea box:
echo '<textarea rows="40" cols="120">';
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
'
;

//Loop inside all links and add them to the sitemap using a default priority as 0.9 and a default changefreq as daily.
foreach ($links as $val)
{

print "<url>
<loc>
$val</loc>
<lastmod>
$date</lastmod>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
"
;
}

print '</urlset>';
echo '</textarea>';

Спустя 11 минут, 30 секунд (19.07.2012 - 11:21) nikolasline написал(а):
//Print all results inside a textarea box:
$data = <<<EOQ
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">

EOQ;


//Loop inside all links and add them to the sitemap using a default priority as 0.9 and a default changefreq as daily.
foreach ($links as $val)
{

$data.= <<<EOQ
<url>
<loc>
$val</loc>
<lastmod>
$date</lastmod>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>

EOQ;
}

$data.= '</urlset>';

$fp = fopen('sitemap.xml', 'w');
fwrite($fp, $data);
fclose($fp);

Спустя 2 минуты, 32 секунды (19.07.2012 - 11:24) kamanch написал(а):
echo и print - это вывод на экран.
fwrite - это запись в файл.

Спустя 1 минута, 2 секунды (19.07.2012 - 11:25) 715kg написал(а):
Спасибо большое. Заработало user posted image

Спустя 21 минута, 46 секунд (19.07.2012 - 11:47) Игорь_Vasinsky написал(а):
ооо....

а что file_put_contets() - вообще ни как? одна строка вместо 3х
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.