Esempio n. 1
0
 function action_page()
 {
     require_once 'exts/simple_html_dom.php';
     $error = 0;
     $finds = null;
     $errormsg = '';
     $postUrl = $_POST['url'];
     $postSelector = $_POST['selector'];
     $html = null;
     try {
         $html = file_get_html($postUrl);
     } catch (Exception $e) {
         $error = -400;
     }
     if ($html === null) {
         $errormsg = "Can't load url";
     } else {
         $finds = $html->find($postSelector);
         if (count($finds) == 0) {
             $selparts = explode(' ', $postSelector);
             $finds = array($html);
             foreach ($selparts as $part) {
                 if (strcasecmp($part, ' ') == 0) {
                     continue;
                 }
                 $dotscount = substr_count($part, '.');
                 if ($dotscount > 1) {
                     $classes = array_filter(explode('.', $part));
                     $newfinds = array();
                     foreach ($finds as $el) {
                         $fndEls = $el->find('.' . reset($classes));
                         foreach ($fndEls as $fndEl) {
                             $elClasses = array_filter(explode(' ', $fndEl->class));
                             $num = 0;
                             foreach ($classes as $class) {
                                 if (in_array($class, $elClasses)) {
                                     $num = $num + 1;
                                 }
                             }
                             if ($num == count($classes)) {
                                 array_push($newfinds, $fndEl);
                             }
                         }
                     }
                     $finds = $newfinds;
                 } else {
                     $newfinds = array();
                     foreach ($finds as $el) {
                         $fndEls = $el->find($part);
                         foreach ($fndEls as $fndEl) {
                             array_push($newfinds, $fndEl);
                         }
                     }
                     $finds = $newfinds;
                 }
                 if (count($finds) == 0) {
                     break;
                 }
             }
         }
     }
     $data = array('error' => $error);
     if ($finds !== null && count($finds) != 0) {
         $arrEls = array();
         foreach ($finds as $el) {
             array_push($arrEls, $el->outertext);
         }
         $data['result'] = $arrEls;
     }
     if ($errormsg !== null) {
         $data['errormsg'] = $errormsg;
     }
     $view = new JsonView();
     $view->generate($data);
     if ($html != null) {
         $html->clear();
         unset($html);
     }
 }