]> git.mxchange.org Git - friendica.git/blobdiff - mod/parse_url.php
fix json_encode on url's
[friendica.git] / mod / parse_url.php
index aa71893ab47ebade0e5043976157f57d174daf59..ef9f8a9f41b537644ea0464e01d0d276be1d61ae 100644 (file)
@@ -2,11 +2,28 @@
 
 require_once('library/HTML5/Parser.php');
 
+
 function parse_url_content(&$a) {
 
-       $url = trim($_GET['url']);
+       logger('parse_url: ' . $_GET['url']);
+
+       $url = trim(hex2bin($_GET['url']));
+
+       logger('parse_url: ' . $url);
+
+       $text = null;
+
+       $template = "<a href=\"%s\" >%s</a>\n%s";
 
-       $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);
@@ -14,13 +31,14 @@ function parse_url_content(&$a) {
                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 +52,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;
+                       }
                }
        }