[07.04.2009 22:14:35] ev9niy: Parser для
Ozon.ru
[07.04.2009 22:14:41] *** Call to andrew.boltachev, no answer. ***
[07.04.2009 22:15:02] ev9niy: Вечера, по поводу парсера
[07.04.2009 22:15:27] *** Звонок закончен ***
[07.04.2009 22:15:27] ev9niy: ev9niy is away. This is an auto-reply message. Get your copy of Pamela for Skype today at
www.pamela-systems.com and enjoy these messages!
[07.04.2009 22:16:28] *** Call to andrew.boltachev, no answer. ***
[07.04.2009 22:16:31] *** Звонок закончен ***
[07.04.2009 22:16:48] andrew.boltachev: да, здравствуйте
[07.04.2009 22:17:01] andrew.boltachev: простите, интернет отключался
[07.04.2009 22:17:09] ev9niy: Привет)
[07.04.2009 22:17:10] *** Call to andrew.boltachev, no answer. ***
[07.04.2009 22:17:25] andrew.boltachev: у меня нет микрофона (
[07.04.2009 22:17:29] *** Звонок закончен ***
[07.04.2009 22:17:32] ev9niy: блин)
[07.04.2009 22:17:50] ev9niy: Интересно поглядеть что писал, какие сроки, сколько хочешь денег?
[07.04.2009 22:18:21] andrew.boltachev: писал -- хтмл парсер
[07.04.2009 22:18:32] andrew.boltachev: могу показать примеры
[07.04.2009 22:18:40] ev9niy: Сорс можно прям в скайп)
[07.04.2009 22:18:50] andrew.boltachev: вот например сделанный мной сайт
[07.04.2009 22:19:02] andrew.boltachev:
http://pogoda.4informer.ru/
[07.04.2009 22:19:23] andrew.boltachev: сейчас отыщу, "на дальней полке"
[07.04.2009 22:19:30] ev9niy: Оки) Жду
[07.04.2009 22:20:02] ev9niy: Прикольный сайт
[07.04.2009 22:20:19] andrew.boltachev: почти бесполезный...)
[07.04.2009 22:20:26] andrew.boltachev: в лпне дохода
[07.04.2009 22:21:28] ev9niy: Можено кому-нть продать или в сайт вставить, тур фирме
[07.04.2009 22:21:32] ev9niy: Жду код)
[07.04.2009 22:22:29] ev9niy: я тут до 22:30
[07.04.2009 22:22:34] ev9niy: потом занят
[07.04.2009 22:23:03] andrew.boltachev: вот
[07.04.2009 22:23:08] andrew.boltachev: 90+50/60,1=>96,2=>102,3=>108,4=>false);
$i=0;
while ($zeniths[$i]) {
$res = date_sunrise1($time,$format,$lat,$lng,$zeniths[$i],$gmt);
if (($res)and($res!=1)) return $res;
$i++;
}
return false;
}
function date_sunset2 ($time,$format,$lat,$lng,$gmt)
{
$zeniths = Array(0=>90+50/60,1=>96,2=>102,3=>108,4=>false);
$i=0;
while ($zeniths[$i]) {
$res = date_sunset1 ($time,$format,$lat,$lng,$zeniths[$i],$gmt);
if (($res)and($res!=1)) return $res;
$i++;
}
return false;
}
function to_temperat($a)
{
$b = ($a{0}==='-') ? 3 : 2;
$a = trim(substr($a,0,$b));
settype($a,"double");
return $a;
}
function windpa($s)
{
$s = trim(strtolower($s));
if ((strpos($s,"kph")!==false)and(strpos($s,"kph"))!==false)
{
$s = str_replace("kph","eIa",$s);
$s = str_replace("mph","IIa",$s);
$s = str_replace("0 IIa","0",$s);
$s = str_replace("0 eIa","0",$s);
} else {
to_log("?Unknown wind format: $s",'get_forecast');
}
return $s;
}
function windd($s)
{
if ($s == "CALM") {
return "";
} else {
$s = str_replace("N","N",$s);
$s = str_replace("E","A",$s);
$s = str_replace("W","C",$s);
$s = str_replace("S","?",$s);
return $s;
}
}
function processObs($wbfilename, $obs, $day)
{
//----------------------------------------------------------------------------------------------
$imgid = 0;
settype($day,'integer');
if ($wbfilename != "")
{
$filename = "images/twc/" . GetFileName($wbfilename);
$hasimg = mysql_query("SELECT * FROM `weather_observation` WHERE `value`=\"".$obs."\" AND `day`=$day");
if (($hasimg === false) or (mysql_num_rows($hasimg)==0))
{
/*echo "Copy: ";*/
//echo "
http://weatherbonk.com" . $wbfilename;
//echo SCRIPT_DIR . $filename;
//echo "copy(\"
http://weatherbonk.com" . $wbfilename. "\", \"" . SCRIPT_DIR . $filename . "\");";
$isf = is_readable(BASE_DIR . "weatherscript/" . $filename);
if (!$isf) {
copy("
http://weatherbonk.com" . $wbfilename, BASE_DIR . "weatherscript/" . $filename);
to_log ("New image:" . $wbfilename,'observation');
}
$isf = is_readable(BASE_DIR . "weatherscript/" . $filename);
if (!mysql_query("INSERT INTO `weather_observation` (`wbfilename`,`value`,`rus`,`imgfile`,`isfile`,`day`) VALUES (\"$wbfilename\",\"$obs\",\"$obs\",\"$filename\",$isf,$day)"))
{
to_log ("MySQL error : " . mysql_error(),'get_forecast');
}
to_log ("New value:" . $obs,'observation');
}
$hasimg = mysql_query("SELECT * FROM `weather_observation` WHERE `value`=\"".$obs."\" AND `day`=$day");
$fimg = mysql_fetch_array($hasimg);
$imgid = $fimg['id'];
}
return $imgid;
//----------------------------------------------------------------------------------------------
}
function GetFileName($filepath)//Oaaeeou ion?aa!
{
if (strpos($filepath,'/') === false)
{
return $filepath;
} else {
return GetFileName(substr($filepath,strpos($filepath,'/')+1));
}
}
function getCC($lat,$lng)
{
$cxml = simplexml_load_file("
http://maps.google.com/maps/geo?output=xml&oe=utf-8&key=".GMAP_KEY."&q=".$f['lat'].",".$f['lng']);//Ia?aaaeaou
if (isset($cxml->Response->Placemark->AddressDetails->Country->CountryNameCode))
return $cxml->Response->Placemark->AddressDetails->Country->CountryNameCode;
else
return false;
}
//echo "Begin\n";
function delnobr($str)
{
$str = str_replace("","",$str);
$str = str_replace("","",$str);
return $str;
}
function getForecast($id,$lat,$lng,$gmt_offset)
{
$zenith = 90 + 50/60; //May be other
$url = '
http://weatherbonk.com/weather/fragments/forecast.jsp?type=twc&inFrame=yes&skin=v3&inMap=null&fullHeight=true&_display=C&id='.$lat.','.$lng;
$doc = file_get_html($url);
//echo $doc->find('table',1);
if ($doc->find('table',1)==NULL) {
//echo "No information!";
return false;
}
$q = "";
if ((count($doc->find('table',1)->find('tr'))!=21)and(count($doc->find('table',1)->find('tr'))!=20)) {
to_log("!!Illegel tr count : ".count($doc->find('table',1)->find('tr'))." (id : ".$id.")",'get_forecast');
to_log($url,'get_forecast');
//return false;
}
////echo $id ." : ". . "\n";
foreach ($doc->find('table',1)->find('tr') as $tr) // id="forecastMain"
{
$td = $tr->find('td');
$tdcount = count($td);
if ($tdcount == 0) {
} elseif ($tdcount == 1) {
//Aaoa
//echo "Aaoa : " . trim($td[0]->plaintext) . "";
$fullstrdate = trim($td[0]->plaintext);
} elseif ($tdcount == 3) {
$img = $td[0]->find('img');
$img = $img[0];
//echo "Ieeoia?aiia (Aa?an = \"".$img->src."\", caiaia = \"".$img->alt."\")" . "";
$q .= ", ";
$weather = delnobr($td[1]->innertext);
$morning = (preg_match("/(Sunrise)/",$weather)!=0);
$evening = (preg_match("/(Sunset)/", $weather)!=0);
if (!($morning xor $evening)) {
to_log('!!Illegal weather (morning/evening): ' . $weather,'get_forecast');
return false;
}
$strdate = substr($fullstrdate,strpos($fullstrdate," ")+1);
$time = strtotime($strdate);
echo "$strdate\n";
$hour = ($morning) ? "06" : "18";
/*Sun calculating*/
$curmonth = (int)date("m",time());
$datemonth = (int)date("m",$time );
$year = (int)date("Y");
/*var_dump($curmonth );
var_dump($datemonth);
var_dump($year);*/
if ($curmonth==12 AND $datemonth==1) $year++;
$date = date("$year-m-d ".$hour.":00:00",$time);
$dateid = "$id $date";
echo "$strdate : ".date("Y-m-d H:i:s",$time)." : $date\n";
$time = strtotime($date);
$time_next = $time + 24*60*60;
if ($morning) {
$sun = date_sunrise1($time,SUNFUNCS_RET_TIMESTAMP,$lat,$lng,$zenith,$gmt_offset);
//echo "Sun : ".date("Y-m-d H:i:s",$sun)."\n";
$endtime = date_sunset2 ($time,SUNFUNCS_RET_TIMESTAMP,$lat,$lng,0);
//echo "End : ".date("Y-m-d H:i:s",$endtime)."\n";
} else {
$sun = date_sunset1 ($time,SUNFUNCS_RET_TIMESTAMP,$lat,$lng,$zenith,$gmt_offset);
//echo "Sun : ".date("Y-m-d H:i:s",$sun)."\n";
$endtime = date_sunrise2($time_next,SUNFUNCS_RET_TIMESTAMP,$lat,$lng,0);
//echo "End : ".date("Y-m-d H:i:s",$endtime)."\n";
}
if ($endtime==0) return false;
$q .= "(" . $id . ", \"$date\", \"$dateid\", ";
//echo "Iiaiaa : " . $weather . "";
//RegEx-ia?neia no?i?ee iiaiau
//Showers, 40% chance of precipitation. Winds 14.5 kph from SW. Humidity 93% Sunrise: 8:03 AM
//echo $weather . "";
$res1 = array();
preg_match("/^([^,]+)[,][ ]/",$weather,$res1);
//echo "res1 : " . $res1[1] . "";
#$q.=processObs($res1[1]) . ", ";
//echo $img->src . "";
$q.= " " . to_temperat(delnobr(($td[2]->plaintext))) . ", ";
if (isset($res1[1])) {
$q.=processObs($img->src,$res1[1],$morning) . ", ";
} else {
to_log("!Obs: " . $weather,'get_forecast');
$q.= " 0, ";
}
$chance = 0;
$res2 = array();
preg_match("/^[^,]+[,][ ]+([0-9][0-9]?[0-9]?)[ ]*[%][ ]*/",$weather,$res2);
//echo "res2 : " . $res2[1] . "";
if (isset($res2[1]))
{
$q.=$res2[1] . ", ";
$chance = $res2[1];
} else {
to_log("!Chance: " . $weather,'get_forecast');
$q.=" -1, ";
}
$res3 = array();
preg_match("/Winds[ ]*([0-9]+[.]?[0-9]* [km]ph)/",$weather,$res3);
//echo "res3 : " . $res3[1] . "";
if (isset($res3[1])) {
$q.= "\"" . windpa($res3[1]) . "\", ";
}else {
to_log("!Wind: " . $weather,'get_forecast');
$q.=" \"\", ";
}
$res4 = array();
preg_match("/from[ ]*([NEWSCALM]+)/",$weather,$res4);
//echo "res4 : " . $res4[1] . "";
//$q.= "\"" . $res4[1] . "\", ";
if (isset($res4[1])) {
$q.= "\"" . windd($res4[1]) . "\", ";
}else {
to_log("!WindDir: " . $weather,'get_forecast');
$q.=" \"\", ";
}
$res5 = array();
preg_match("/Humidity[ ]*([0-9][0-9]?[0-9])?[ ]*[%]/",$weather,$res5);
//echo "res5 : " . $res5[1] . "";
if ($chance!=0){
if (isset($res5[1])) {
$q.= $res5[1] . ", ";
}else {
to_log("!Humidity: " . $weather,'get_forecast');
$q.=" -1, ";
}
} else {
$q.=" 0, ";
}
$res6 = array();
if ($morning) {
preg_match("/Sunrise:(.*$)/",$weather,$res6);
if (isset($res6[1])) {
$q.= "\"" . $res6[1] . "\", \"\"";
}else {
to_log("!Sunrise: " . $weather,'get_forecast');
$q.=" \"\",\"\"";
}
} else {
preg_match("/Sunset:(.*$)/",$weather,$res6);
if (isset($res6[1])) {
$q.= "\"\", \"" . $res6[1] . "\"";
} else {
to_log("!Sunset: " . $weather,'get_forecast');
$q.=" \"\",\"\"";
}
}
//echo "res6 : " . $res6[1] . "";
//echo "Oaiia?aoo?a: " . delnobr($td[2]->plaintext) . "";
$day = ($morning) ? 1 : 0;
$sun = date("Y-m-d H:i:s",$sun);
$endtime = date("Y-m-d H:i:s",$endtime);
$q.=",$day,\"$sun\",\"$endtime\")";
}
}
$doc->clear();
unset($doc);
return $q;
}
to_log ("----------------Starting update----------------",'get_forecast');
###mysql_query("TRUNCATE TABLE `weather_forecast`");
$w_countries = mysql_query("
SELECT `work_countries`.`id` FROM `work_countries` WHERE `work_countries`.`work`
");
for ($j=0;$j";
$date = date("Y-m-d H:i:s");
$reqhead = "REPLACE INTO `weather_forecast` (`pid`,`date`,`dateid`, `temperature`,`obs`,`chance`,`wind`,`winddir`,`humidity`,`sunrise`,`sunset`,`day`,`sun`,`endtime`) VALUES ";
$q = "";
for ($i=0; $i\n";
echo $req;
//die ();
}
unset($q); $q = "";
}*/
$f = mysql_fetch_array($r);
//echo $i . " : " . $f['showname'] . "";
$comma = ($i != 0);
$offset = $f['utc'];
$name = $f['name'];
/////echo $f['body'] . " $offset\n";
echo "$name\n";
$s = getForecast($f['id'],$f['lat'],$f['lng'],$offset);
//echo $s;
if ($s!==false)
{
$q .= $s;
} else {
to_log("Unable to request : ".$f['lat'].", ".$f['lng'],'get_forecast');
}
}
if ($q != "") {
$req = $reqhead . substr($q,1);
//echo $req . "";
if (!mysql_query($req)) {
to_log ("MySQL error (add): " . mysql_error(),'get_forecast');
echo "MySQL error (add): " . mysql_error();
echo "\n";
echo $req;
//die ();
}
}
}
?>
[07.04.2009 22:23:21] ev9niy: спасибо курю =)
[07.04.2009 22:24:14] andrew.boltachev: это не так сразу было... но сейчас работает, полгода как :)
[07.04.2009 22:24:33] ev9niy: главное что автомат)
[07.04.2009 22:25:50] andrew.boltachev: да. это для остоянного запуска. он за 3 минуты информацию где-то по 200-300 городам о погоде собирает
[07.04.2009 22:25:56] andrew.boltachev: ну там сервер мощный
[07.04.2009 22:26:46] andrew.boltachev: и как? по поводу сотрудничества?
[07.04.2009 22:26:56] ev9niy:
Поглядел код интересные моменты с условием и прегматчем)
[07.04.2009 22:27:37] ev9niy: Сколько денег думаешь?
[07.04.2009 22:27:42] ev9niy: И сроки?
[07.04.2009 22:27:47] andrew.boltachev: сроки день
[07.04.2009 22:28:06] andrew.boltachev: там xml - его проще так то
[07.04.2009 22:28:20] andrew.boltachev: завтра думаю в это же время
[07.04.2009 22:28:37] andrew.boltachev: денег 600 думаю
[07.04.2009 22:29:05] ev9niy: Ок, 300р после просмотра кода ещё 300р за доводку, если все отлично 600р идет?
[07.04.2009 22:29:14] andrew.boltachev: да
[07.04.2009 22:29:29] andrew.boltachev: так, а там на постоянный запуск?
[07.04.2009 22:29:32] ev9niy: Сроки - обещал завтра в 22:30 значит должно быть готово, если не успешь то не работаю, ок?
[07.04.2009 22:29:50] ev9niy: Да будет переодически весеть собирать инфу
[07.04.2009 22:29:53] andrew.boltachev: разумеется. сроки это главное в нашем деле
[07.04.2009 22:30:27] andrew.boltachev: так как по 100 на проект человек аходит - какая-нибудь верстка там )
[07.04.2009 22:30:39] ev9niy: Ок
[07.04.2009 22:30:44] andrew.boltachev: а оплата вебмани будет? или как?
[07.04.2009 22:30:58] ev9niy: Тогда подтверждаю заявку и со всем приостанавливаю общение, жду кода
[07.04.2009 22:31:06] ev9niy: Оплата YM или
WM?
[07.04.2009 22:31:12] andrew.boltachev: аа)
[07.04.2009 22:31:18] andrew.boltachev: да, webmoney
[07.04.2009 22:31:44] andrew.boltachev: +бонус - комментарии (постараюсь подробнее)
[07.04.2009 22:32:52] andrew.boltachev: завтра с 22:00 до 23:00 гарантированно буду на связи
[07.04.2009 22:33:34] ev9niy: Ок, пойдет
[07.04.2009 22:33:57] ev9niy: Отписал всем что тебя выбрал сейас ещё утврежу заявку
[07.04.2009 22:40:46] ev9niy: Заявку утвердил, все ок, тогда успехов в работе!
[07.04.2009 22:41:13] andrew.boltachev: спасибо, и до завтра!
[07.04.2009 22:41:28] ev9niy: Бай)
[08.04.2009 14:57:37] andrew.boltachev: Добрый день
[08.04.2009 14:57:39] ev9niy: ev9niy is away. This is an auto-reply message. Get your copy of Pamela for Skype today at
www.pamela-systems.com and enjoy these messages!
[08.04.2009 14:57:45] andrew.boltachev: есть вопросы, если можно
[08.04.2009 16:02:39] ev9niy: Привет, сейчас я не доступен, есть 5 мин
[08.04.2009 16:03:42] ev9niy: могу ответить на вопросы.
[08.04.2009 16:05:23] andrew.boltachev: да
[08.04.2009 16:06:05] andrew.boltachev: с основным я разбрался. на выходе могу сделать луюой массив (в терминах PHP Array)
[08.04.2009 16:06:22] andrew.boltachev: или нужно просто вывести в консоль?
[08.04.2009 16:06:29] andrew.boltachev: *любой
[08.04.2009 16:07:16] ev9niy: просто вывести, я там дальше сам :)
[08.04.2009 16:07:25] andrew.boltachev: хорошо
[08.04.2009 16:07:35] andrew.boltachev: кстати по твоему старому коду
[08.04.2009 16:07:51] andrew.boltachev: не понимаю, откуда $xml_sp->Product
[08.04.2009 16:07:52] ev9niy: Да знаю, там делать 5 сек :)
[08.04.2009 16:08:03] ev9niy: Это как объект
[08.04.2009 16:08:14] ev9niy: Перевод объекта в массив потом в базу
[08.04.2009 16:08:30] andrew.boltachev: в базу, ну логично :)
[08.04.2009 16:08:39] andrew.boltachev: а по категориям
[08.04.2009 16:08:57] andrew.boltachev: для каждого фильма выдернуть названия категорий? не только идентификаторы?
[08.04.2009 16:09:05] andrew.boltachev: и тут же включить сразу?
[08.04.2009 16:09:10] ev9niy: Название, как по тз :)
[08.04.2009 16:09:41] andrew.boltachev: хорошо, все в 22 будет готово
[08.04.2009 16:10:17] ev9niy: Ок, буду ближе к этому времени! Удачи!
[08.04.2009 21:51:58] ev9niy: Доброго вечера как успехи?
[08.04.2009 21:52:11] andrew.boltachev: все почти готово
[08.04.2009 21:52:22] ev9niy: Ок, нужен YM или WMR кошелек
[08.04.2009 21:52:42] andrew.boltachev: подожди 10 мин, доведу код
[08.04.2009 21:52:44] andrew.boltachev: :)
[08.04.2009 21:52:47] ev9niy: ок
[08.04.2009 21:52:51] andrew.boltachev: так то 22:30
[08.04.2009 21:53:03] andrew.boltachev: "дедлайн" :)
[08.04.2009 21:53:07] ev9niy: Ок
[08.04.2009 22:06:31] andrew.boltachev: так, в 22:30 все с комментариями...
[08.04.2009 22:06:47] andrew.boltachev: терпит?
[08.04.2009 22:06:58] ev9niy: Можно и без коментов, я пойму ;)
[08.04.2009 22:07:07] andrew.boltachev: а, ну хорошо
[08.04.2009 22:07:21] andrew.boltachev: если что - объясню по конкретным моментам...
[08.04.2009 22:07:36] ev9niy: Ок
[08.04.2009 22:07:51] ev9niy: Нужен кошелек, мой
[email protected]
[08.04.2009 22:10:04] andrew.boltachev: R789697525024 вебмани
[08.04.2009 22:10:09] ev9niy: Ок
[08.04.2009 22:13:57] ev9niy: Деньгу 300р перевел, код протекции после просмотра кода.
[08.04.2009 22:14:15] ev9niy: +300р после мелких правок какие найду после отладки
[08.04.2009 22:14:26] andrew.boltachev: ок
[08.04.2009 22:14:30] andrew.boltachev: вижу перевод
[08.04.2009 22:15:00] ev9niy: ок
[08.04.2009 22:27:40] ev9niy: Как успехи?
[08.04.2009 22:27:56] ev9niy: Мне завтра в 6:50 вставать ;)
[08.04.2009 22:28:00] andrew.boltachev: да нормально. только кое-что переделать решил
[08.04.2009 22:28:13] ev9niy: Скинь код плз, можно прям сюда
[08.04.2009 22:28:20] andrew.boltachev: ок
[08.04.2009 22:28:30] andrew.boltachev: сейчас... вот еще чуть-чут и отлажу (
[08.04.2009 22:28:41] ev9niy: Я подскажу что глючит
[08.04.2009 22:30:55] ev9niy: В 22:35 на боковую
[08.04.2009 22:30:59] ev9niy: спать.
[08.04.2009 22:31:26] andrew.boltachev: ну в 6:50 я тоже буду, если что то нужно будет
[08.04.2009 22:31:42] ev9niy: Ок, тогда отложим, идет?
[08.04.2009 22:31:48] andrew.boltachev: ага
[08.04.2009 22:31:57] ev9niy: Ок, тогда ночи.
[08.04.2009 22:31:58] andrew.boltachev: в 6:50 все, с комментариями
[08.04.2009 22:32:02] ev9niy: ок
[08.04.2009 22:32:10] ev9niy: Лишь бы по ТЗ и раболало ;)
[08.04.2009 22:32:13] andrew.boltachev: вот у тебя нерекурсивный поиск
[08.04.2009 22:32:25] andrew.boltachev: у меня процедура хитрая, а глючит
[08.04.2009 22:32:31] andrew.boltachev: чуть-чуть
[08.04.2009 22:32:33] ev9niy: Там нужно было переделать ;)
[08.04.2009 22:32:38] ev9niy: А в чём глюк?
[08.04.2009 22:32:44] andrew.boltachev: function toarray($x)
{
if ($x instanceof SimpleXMLElement)
{
$y = Array();
foreach ($x->children() as $k=>$v){
$y[$k] = $v;
}
foreach ($x->children as $k=>$v){
$y[$k] = $v;
}
[08.04.2009 22:32:55] andrew.boltachev: вот точнее не глюк, меня глючит
[08.04.2009 22:33:06] andrew.boltachev: дальше допишу
[08.04.2009 22:33:17] andrew.boltachev: кстати под запуск - по крону, я правильно понял?
[08.04.2009 22:33:29] ev9niy: да
[08.04.2009 22:33:45] andrew.boltachev: а ну тогда ок
[08.04.2009 22:33:55] andrew.boltachev: файл нужно будет сначала
[08.04.2009 22:34:07] andrew.boltachev: скопировать в темповую директорию, а потом парсить
[08.04.2009 22:34:17] andrew.boltachev: а то он размером - 40 мб почти
[08.04.2009 22:34:29] andrew.boltachev: с этим могут быть проблемы на сервере
[08.04.2009 22:34:41] andrew.boltachev: но если что я помогу пхп настроить опыт есть
[08.04.2009 22:34:45] ev9niy: function dom2array( $node ,$tab='',$node_name='') {
//echo $tab.'#dom2array:'.$node_name.' - '.XML_TEXT_NODE.' - '.$node->nodeType."\r\n";
$result = array();
if($node->nodeType == XML_TEXT_NODE) {
$result = $node->nodeValue;
$charset = mb_detect_encoding($result,"auto");
if ($charset=='UTF-8'){
$result = iconv($charset,'Windows-1251', $result);
}
//echo $tab.'#$result: '.$result."\r\n";
}
else {
if( $node->hasAttributes() ) {
$attributes = $node->attributes;
if(!is_null($attributes))
foreach ($attributes as $index=>$attr){
$value = $attr->value;
$charset = mb_detect_encoding($value,"auto");
if ($charset=='UTF-8'){
$value = iconv($charset,'Windows-1251', $value);
}
//echo $tab.'#$value: '.$value."\r\n";
$result[$attr->name] = $value;
}
}
if($node->hasChildNodes()){
$children = $node->childNodes;
for($i=0;$i<$children->length;$i++){//if ($i>2&&$i<9){
$child = $children->item($i);
//$tab= '';
//for($j=0;$j<$i;$j++) {
//$tab.="\t";
//}
//echo $tab.$i."\r\n";
//if ($child->nodeName == '#text'){
////echo ' #$child->nodeName: '.$result[$child->nodeName]."\r\n";
//$value = $result[$child->nodeName];
//if (!is_array($value)){
////$value = $attr->value;
//$charset = mb_detect_encoding($value,"auto");
//if ($charset=='UTF-8'){
//$value = '$$+$'.iconv($charset,'Windows-1251', $value);
//}
//}else {
//foreach ($value as $value_title => $value_value){
//$charset = mb_detect_encoding($value_value,"auto");
//if ($charset=='UTF-8'){
//$value[$value_title]= '$$'.iconv($charset,'Windows-1251', $value);
//}
//}
//$result[$child->nodeName]=$value;
//}
//$result[$attr->name] = $value;
//}
//if($child->nodeName != '#text')
//echo $tab.' #$child->nodeName]: '.$child->nodeName."\r\n";
//echo $tab.''.' #$result: '; print_r($result); echo $tab.'';
if(!isset($result[$child->nodeName])){
$tmp = dom2array($child,$tab,$child->nodeName);
//echo ' #$tmp: '.$tmp."\r\n";
//echo ' #count($tmp): '.count($tmp)."\r\n";
//echo ' #$tmp: '.$tmp."\r\n";
if (is_array($tmp)){
if (count($tmp)!=0){
$result[$child->nodeName]=$tmp;
}
}else {
if (trim($tmp)!=''){
$result[$child->nodeName]=trim($tmp);
}
}
}
else {
//$charset = mb_detect_encoding($value,"auto");
//if ($charset=='UTF-8'){
//$value = iconv($charset,'Windows-1251', $value);
//}
$aux = $result[$child->nodeName];
//echo ' #$aux: '.$aux."\r\n";
$result[$child->nodeName] = array( $aux );
$tmp= array();;
$tmp = dom2array($child,$tab,$child->nodeName);
//if ($tmp!='') //
if (is_array($tmp)){
if (count($tmp)!=0){
$result[$child->nodeName][]=$tmp;
}
}else {
if (trim($tmp)!=''){
$result[$child->nodeName][]=trim($tmp);
}
}
}
}
}
}
return $result;
}
[08.04.2009 22:35:04] andrew.boltachev: громоздко
[08.04.2009 22:35:17] ev9niy: это для HTML Объекта)
[08.04.2009 22:35:18] andrew.boltachev: а кодировка вывода какая нужна?
[08.04.2009 22:35:23] ev9niy: пофг
[08.04.2009 22:35:31] ev9niy: сам поправлю
[08.04.2009 22:35:32] andrew.boltachev: UTF-8 будет
[08.04.2009 22:35:36] ev9niy: ок
[08.04.2009 22:36:05] andrew.boltachev: simplexml_load_file - не работает с CP1251
[08.04.2009 22:36:08] ev9niy: парсить буду в локали так что все ок
[08.04.2009 22:36:52] ev9niy: Лады, давай я байньки! Ты тоже поспи мозг лучше работает а ещё советую перерывы
workrave.org
[08.04.2009 22:36:55] ev9niy: Бай!
[08.04.2009 22:37:16] andrew.boltachev: до встречи
[09.04.2009 6:57:10] ev9niy: Обешал что будешь?
[09.04.2009 7:30:00] andrew.boltachev: не получилось быть. сейчас все сделаю
[09.04.2009 8:06:54] ev9niy: Извинюсь сегодня целый день в делах, завтра утром в 8 буду, приму код ок?
[09.04.2009 8:07:33] andrew.boltachev: хорошо
[09.04.2009 8:07:34] ev9niy: ev9niy is away. This is an auto-reply message. Get your copy of Pamela for Skype today at
www.pamela-systems.com and enjoy these messages!
[09.04.2009 8:07:38] andrew.boltachev: да могу и сейачс кинуть
[09.04.2009 8:07:41] andrew.boltachev: вроде все
[09.04.2009 8:08:01] andrew.boltachev: ну ладно, зато еще как могу проверю еще
[09.04.2009 8:08:24] andrew.boltachev: почта кстати
[email protected] ?
[09.04.2009 8:08:49] andrew.boltachev:
[email protected]
[09.04.2009 8:12:56] andrew.boltachev: в 7-8 я точно в сети бываю, кроме выходных
[09.04.2009 8:36:05] ev9niy:
[email protected]
[09.04.2009 8:36:12] ev9niy: Ок, тогда до завтра! Удачи!
[6:51:25] ev9niy: Доброго утра!
[6:51:29] ev9niy: Как успехи?)
[7:06:52] andrew.boltachev: да, нормально
[7:07:32] andrew.boltachev: сейчас скоро код отдам, там еще всего 1 маленькая проблема была
[7:08:08] ev9niy: Ок, жду
[7:08:18] ev9niy: 3 дня уже прошло :)
ev9niy
[7:44:43] ev9niy:
[email protected]
[7:44:50] andrew.boltachev: ок
[7:44:56] andrew.boltachev: туда все аправить?
[7:45:03] andrew.boltachev: *направить
[7:45:03] ev9niy: Да
[7:45:10] ev9niy: Все должно быть как в ТЗ
[7:45:27] andrew.boltachev: Ок
[7:45:37] ev9niy: Что там глючит?
[7:46:03] andrew.boltachev: у меня в массив из xml не переводит
[7:46:14] andrew.boltachev: если несколько одинаковых тегов подряд
[7:46:21] andrew.boltachev: вот и разбираюсь
[7:46:23] andrew.boltachev: а так все
[7:46:53] andrew.boltachev: мне уже тоже надоело) одним проектом заниматься
[7:46:54] ev9niy:
На выходе массив:
[4412676]
[url]=
http://www.ozon.ru/context/detail/id/4412676/?from=partner
[categoryId_1]= 10059
[categoryId_2]= 10388
[categoryId_3]= 1075240
[orderingTime]
[ordering]= На складе
:
Итак далее все значения какие будут.
[description]= Программа..
[Следующий ID]
Где название ключей одинаковые, будет:
[4412676] [categoryId_1]= 10059
[4412676] [categoryId_2]= 10388
[4412676] [categoryId_3]= 1075240
И ВАЖНО вытащить из того же xml [categories] названия категорий:
Для нашего примера:
[4412676] [categoryId_1]= Аэробика. Фитнес
[4412676] [categoryId_2]= Обучающие видеопрограммы
[4412676] [categoryId_3]= Красота и здоровье
[7:46:58] ev9niy: ТЗ
[7:47:02] andrew.boltachev: дада
[7:47:08] andrew.boltachev: вот с этим как раз
[7:47:42] ev9niy: Просто масив проверять if(isset()) и делать [$categ.'_'.$current_count]
[7:47:52] ev9niy: 5 сек;)
[7:48:01] andrew.boltachev: ой ну так некрасиво :)
[7:48:08] andrew.boltachev: надо массив вложенный
[7:48:10] andrew.boltachev: )
[7:48:17] andrew.boltachev: его же обрабатывать
[7:48:51] ev9niy: Тогда $array[$categ]=array()
[7:49:01] andrew.boltachev: да
[7:49:08] andrew.boltachev: только это не работает
[7:49:08] ev9niy: И дальше if is_array()
[7:49:25] ev9niy: Потому что изначально переменную нужно создавать как массив
[7:49:42] ev9niy: Ладно код на почте?
[7:49:47] andrew.boltachev: ага
[7:50:01] andrew.boltachev: к сожалению придется заочно вот так вот
[7:50:13] andrew.boltachev: но там потом когда буду в сети - пиши
[7:50:20] ev9niy: Уходишь?
[7:50:28] andrew.boltachev: потом да
[7:50:42] andrew.boltachev: потом приду не знаю во сколько пока
[7:51:04] ev9niy: сейчас время сколько есть?
[7:51:14] andrew.boltachev: час еще гдето
[7:51:20] andrew.boltachev: ну я успеть должен...)
[7:51:31] ev9niy: Кода на почте нет
[7:51:40] ev9niy:
[email protected]
[7:51:58] andrew.boltachev: пока нет. могу этот выслать
[7:52:22] ev9niy: У меня желаюшийх человек 12 отдал тебе так как общеал в срок.
[7:52:27] ev9niy: Можешь не выслылать
[7:52:34] ev9niy: Так как в срок не успел
[7:52:53] ev9niy: Я плюс поставил потому как видел что делал
[7:53:01] ev9niy: Но если пообщела, нужно сделать вовремя
[7:53:14] ev9niy: Показать что есть я бы подсказал как исправить
[7:53:29] andrew.boltachev: понятно, отзыв бескомпромисный спасибо
[7:53:42] andrew.boltachev: shop->offers->offer;
//$i=0;
function xml2array_parse($xml){
$return = Array();
$children = $xml->children();
foreach ($children as $parent => $child){
if (count($children[$parent])>0){
$return["$parent"] = Array();
var_dump($parent);
foreach ($child as $k=>$v){
$return["$parent"][] = xml2array_parse($v)?xml2array_parse($v):"$v";
}
} else {
$return["$parent"] = xml2array_parse($child)?xml2array_parse($child):"$child";
}
}
foreach ($xml->attributes() as $parent => $child){
$return["$parent"] = xml2array_parse($child)?xml2array_parse($child):"$child";
}
return $return;
}
function getcname($cid)
{
global $xml_sp;
foreach ($xml_sp->shop->categories->category as $category){
if ($category["id"] == $cid) return (string)$category;
}
return $cid;
}
$data = Array();
$i=0;
foreach ($offers as $key=>$offer) {
$item = xml2array_parse($offer);
var_dump($offer->categoryId);die();
$id = $item["id"];
//if ($id!==64186) continue;
//if ($id==64186) print_r($offer);
unset($item["id"]);
/*if (is_array($item["categoryId"])) {
foreach ($item["categoryId"] as $k=>$v){
$item["categoryId"][$k] = getcname($v);
}
} else {
$item["categoryId"] = getcname($item["categoryId"]);
}
if (is_array($item["categoryId"])) { var_dump($item); die(); }*/
$data[$id] = $item;
$i++;
//if ($id==64186) break;
}
//print_r($data[64186]);
[7:53:54] ev9niy: Ок момент, код проверю, сколько будешь тут?
[7:54:06] andrew.boltachev: час
[7:54:16] ev9niy: ок, проверяю
[7:55:25] ev9niy: Кстати обещал с коментариями, так же их нет
[7:55:39] andrew.boltachev: ты потом сказал не надо
[7:55:46] andrew.boltachev: давай сделаю
[7:56:02] andrew.boltachev: просто он не окончательный
[7:56:05] ev9niy: Я сказал что не надо, ты сказал ок, будет вчера утрам все сделано да с коментариями
[7:59:21] andrew.boltachev: ну и что неправильно?
[7:59:34] andrew.boltachev: if (count($children[$parent])>0){
$return["$parent"] = Array();
foreach ($child as $k=>$v){
$return["$parent"][] = xml2array_parse($v)?xml2array_parse($v):"$v";
}
}
[7:59:44] andrew.boltachev: вот это бесполезный код
[7:59:54] ev9niy: Сейас смотрю, по факту как по ТЗ не даелает
[8:00:08] andrew.boltachev: категории - нет
[8:00:11] andrew.boltachev: не делает
[8:07:53] andrew.boltachev: что от меня будет нужно?
[8:07:57] andrew.boltachev: вообще?
[8:08:15] ev9niy: Сейчас думаю, нужно отлаживать код, по тз он не рабочий
[8:08:29] ev9niy: Соотвествнно нужно просить человек снова сделать
[8:08:35] ev9niy: за свои деньги отлаживать не буду
[8:08:40] ev9niy: я и сам мог его написать
[8:08:44] ev9niy: за час
[8:08:45] andrew.boltachev: то есть мне не платить?
[8:08:49] andrew.boltachev: или как?
[8:08:58] ev9niy: Оплачу часть за время
[8:09:08] ev9niy: Код не готов по факту, сроки пропушены
[8:09:41] andrew.boltachev: вот мне тоже кажется, что ты бы сам написал. я даже не понял, почему так стал делать - на фриланс писать. еще и за 600 рублей
[8:10:11] ev9niy: Мне человек за 300 р сделал парсин
torrents.ru за день
[8:10:27] andrew.boltachev: нда, ну там HTML
[8:10:35] ev9niy: И без вопросом все отлично, от скилов человека зависит кому делать 5 мин кому делать 3 дня
[8:10:38] andrew.boltachev: у меня вот теперь с XML не получается
[8:10:45] ev9niy: Сколько денег за не сделаную работу хочешь?
[8:10:49] andrew.boltachev: не знаю
[8:10:56] andrew.boltachev: 150руб
[8:11:00] ev9niy: Ок
[8:11:13] ev9niy: Момент перевожу
[8:11:13] andrew.boltachev: код есть его можно отладить
[8:11:22] andrew.boltachev: дак с протекцией есть
[8:11:32] ev9niy: ещё сейчас переведу
[8:11:35] andrew.boltachev: могу взять 300 и 150 послать обратно
[8:11:49] andrew.boltachev: а то ждать срока протекции
[8:13:16] andrew.boltachev: там 300 есть с протекцией
[8:13:23] andrew.boltachev: дак как поступать?
[8:15:20] ev9niy: Перевожу
[8:15:24] andrew.boltachev: получил
[8:15:33] ev9niy: 150 р все ок?
[8:15:38] ev9niy: Вернется на 300р
[8:15:40] andrew.boltachev: да. а 300 ждать пока само уйдет обратно?
[8:15:48] ev9niy: да
[8:16:15] andrew.boltachev: нда. в большой степени неприятно. оно все сообщения будет слать. да ладно поделом мне
[8:16:49] andrew.boltachev: а, завтра уйдет
[8:16:52] ev9niy: Все сообщения?
[8:17:01] ev9niy: Про протекцию?
[8:17:06] andrew.boltachev: да
[8:17:15] andrew.boltachev: типа как открываю , пишет
[8:17:36] andrew.boltachev: да не надо мне давать - за перевод комиссию будет брать. а так бесплатно уйдет
[8:17:45] andrew.boltachev: все тогда, желаю удачи?
[8:18:19] ev9niy: Ок, тоже успехов :)
[8:18:57] andrew.boltachev: наверно буду повышать квалификацию... так для себя. а то работать плохо. и главно е- сроки в любом случае
[8:19:26] ev9niy: Сроки лучше ставить 4 дня, мне например не горит ;)
[8:20:11] ev9niy: И код писать не компактно, а размашесто так быстрее можно ошибку найти, а если стопор, то нужно моделировать ситуацию и пробовать все что есть что бы решить проблему