]> git.mxchange.org Git - friendica.git/blobdiff - mod/parse_url.php
Merge branch 'photos' of https://github.com/fabrixxm/friendika into fabrixxm-photos
[friendica.git] / mod / parse_url.php
index aa71893ab47ebade0e5043976157f57d174daf59..b3b42b6cb6f2ced24b4da9be57d3d16222116c9e 100644 (file)
@@ -2,25 +2,39 @@
 
 require_once('library/HTML5/Parser.php');
 
+
 function parse_url_content(&$a) {
 
        $url = trim($_GET['url']);
 
+       $text = null;
+
        $template = "<a href=\"%s\" >%s</a>%s";
 
+
+       $arr = array('url' => $url, 'text' => '');
+
+       call_hooks('parse_link', $arr);
+
+       if(strlen($arr['text'])) {
+               echo $arr['text'];
+               killme();
+       }
+
        if($url) 
                $s = fetch_url($url);
        else {
                echo '';
                killme();
        }
-       
+
+
        if(! $s) {
                echo sprintf($template,$url,$url,'');
                killme();
        }
 
-       $dom = HTML5_Parser::parse($s);
+       $dom = @HTML5_Parser::parse($s);
 
        if(! $dom)
                return $ret;
@@ -34,15 +48,38 @@ function parse_url_content(&$a) {
                }
        }
 
-       $items = $dom->getElementsByTagName('p');
-       if($items) {
-               foreach($items as $item) {
-                       $text = $item->textContent;
-                       $text = strip_tags($text);
-                       if(strlen($text) < 100)
-                               continue;
-                       $text = substr($text,0,250) . '...' ;
-                       break;
+
+       $divs = $dom->getElementsByTagName('div');
+       if($divs) {
+               foreach($divs as $div) {
+                       $class = $div->getAttribute('class');
+                       if($class && stristr($class,'article')) {
+                               $items = $div->getElementsByTagName('p');
+                               if($items) {
+                                       foreach($items as $item) {
+                                               $text = $item->textContent;
+                                               $text = strip_tags($text);
+                                               if(strlen($text) < 100)
+                                                       continue;
+                                               $text = substr($text,0,250) . '...' ;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       if(! $text) {
+               $items = $dom->getElementsByTagName('p');
+               if($items) {
+                       foreach($items as $item) {
+                               $text = $item->textContent;
+                               $text = strip_tags($text);
+                               if(strlen($text) < 100)
+                                       continue;
+                               $text = substr($text,0,250) . '...' ;
+                               break;
+                       }
                }
        }