updated@13:41msk 20apr2008
source:code.txt
<?
/*
Alexander N Lazutov (c) 2008.
Можете распространять этоmn скрипт как угодно, при указании автора и сслки на http://lazutov.ru
*/

/*формат списка:
<пустая строка> <-- их 5 штук
"Список доменов, которые могут освободиться в течение 5 дней, по состоянию на 20-04-2008 10:25"
Список подготовлен 20.04.2008 00:30
<пустая строка>
Домен,Регистратор,Может быть удален из Реестра регистратором,Дата удаления из реестра Техническим центром,Дата регистрации,Занятость имени в других зонах,Google PR,Yandex тИЦ,Alexa Traffic Rank
03912.RU,R01-REG-RIPN,2008-04-20,2008-04-22,2006-03-17,3 из 7,0,<10,-
03MEDIC.RU,R01-REG-RIPN,2008-04-20,2008-04-22,2007-03-18,1 из 7,?,<10,22587929
...
*/


require('main.php'); //  подключение к MySQL
set_time_limit(0);  //  на всякий случай, пусть будет максимальный лимит времени


/* получаем список CSV*/
$csv=file_get_contents("http://auction.nic.ru/freeing/download_list.cgi?format=csv");
$act=substr($csv,strpos($csv,'по состоянию на ')+strlen('по состоянию на ')+67,16 ); // на всякий случай возьмем дату и время составления  списка
//echo $act.''; так ее можно вывести
mysql_query("SET  SESSION  character_set_database  =  cp1251;",$con); //обязательный запрос при работе  с CSV
$csv=nl2br($csv); // преобразуем все переводы каретки в Б
$csv=explode('<br />',$csv);// иделаем массив строк из прочитанного файла
/*Формируем шапку SQL запроса.*/
$sql="INSERT INTO `".$sql_pref."list` (`domain`,`len`,`sum`, `reg`,`fd`,`dd`,`created`,`pr`,`tic`) VALUES ";

/*если в массиве больше 20 строк, значит он[файл] считался. Поэтому очищаем таблицу со списком доменов*/
if (count($csv)>20) {mysql_query("TRUNCATE `list`;",$con);}
/*Сам список начит=нается с 10 строки поэтому с нее и начнем*/
for ($i=9$i<count($csv);$i++)
    {
     
$csv[$i] = str_replace(' ','',$csv[$i]);// удалим пробемы
     
$csv[$i] = trim($csv[$i]); // и так тоже
     
$val=explode(',',$csv[$i]); 
     
// преобюразуем строку в массив. В строке элементы будущего массива разделены запятыми
// dn,reg,fd,tcdel,created,otert zones,PR,тИЦ,Alexa              < соответствие полей и ссылок
// 0  1   2   3     4        5         6   7   8
$tic=$val[7]; // так как тиц и PR числовые величины, а в списке у них не только числовые значения, то
$pr=$val[6];
if (
settype($tic,'integer')===false$tic=0// меняем тип на integer, и если  операция прошла  неудачно(тоесть либо ? либо -), то присваиваем значение 0
if (settype($pr,'integer')===false$pr=0;  

$len=strlen($val[0])-3// считаем длинну домена: aaa.ru  6 символов минус 3(.ru)

/* тут определяем тип домена но в конечном счете я это не использовал*/
if (preg_match("/[A-Za-z0-9-\x2E]/",$val[0])){$sum='nld';}
if (
preg_match("/[A-Za-z0-9\x2E]/",$val[0])){$sum='nl';}
if (
preg_match("/[A-Za-z-\x2E]/",$val[0])){$sum='ld';}
if (
preg_match("/[0-9-\x2E]/",$val[0])){$sum='nd';}
if (
preg_match("/[A-Za-z\x2E]/",$val[0])){$sum='l';}
if (
preg_match("/[0-9\x2E]/",$val[0])){$sum='n';}

//если у нас считался домен то дописываем наш sql запрос
   
if ($val[0]!=''$sql.="('$val[0]' ,'$len','$sum', '$val[1]', '$val[2]', '$val[3]', '$val[4]', $pr$tic),";
//обратите внимание, что последний символ запроса - запятая поэтому
    
}  // при выходе из цикла удаляем эту запятую и ставим не ее меcто ;
$sql=substr($sql,0,strlen($sql)-1).';';
if (!(
mysql_query($sql,$con))) echo mysql_error();     // запускаем запрос
//echo $sql; // можно вывести и сам запрос.
 
echo ('done');
//готово
//done!
?>
1