| 
<?php
 
 header("Content-type: application/json");
 
 
 // if(!isset($_POST['post']) or empty($_POST['post'])) return;
 
 //$_POST['post'] = "https://phppot.com/php/extract-content-using-php-and-preview-like-facebook/";
 
 $urlPattern = "/(http|https)?(:\/\/)?([a-zA-Z0-9]\.)?[A-Za-z]+\.[\/a-zA-Z0-9-_=\?]+/m";
 
 $link = preg_match($urlPattern, $_POST['post'], $m);
 
 $res  = [
 "res" => false
 ];
 
 if ($link) {
 $link = $m[0];
 $content = @file_get_contents($link,false, stream_context_create( [
 "http" => [
 "follow_location" =>true,
 "user_agent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)"
 ]
 ]));
 
 if (!$content) {
 $res[] = "Link Preview not available";
 echo  json_encode($res);
 exit;
 }
 
 $dom = new DOMDocument();
 @$dom->loadHTML($content);
 $meta =  $dom->getElementsByTagName("meta");
 $title = $dom->getElementsByTagName('title');
 $title = $title->item(0)->nodeValue;
 $img = $dom->getElementsByTagName("img");
 $img = $img->item(0)->getAttribute("src");
 $img  = ($img and filter_var($img, FILTER_VALIDATE_URL)) ?
 $img : "internet.png";
 $description = "";
 
 if ($meta) {
 for ($i = 0; $i < $meta->length; $i++) {
 $current = $meta->item($i);
 if ($current->getAttribute("name") == "description") {
 $description = $current->getAttribute("content");
 break;
 } else {
 $description = "Page decription not available";
 }
 }
 }
 
 if ($title) {
 $res = json_encode([
 "res" => true,
 "title" => $title,
 "desc" => $description,
 "img" => $img,
 "link" => $link
 ]);
 echo  $res;
 }
 } else {
 $res[] = "Link Preview not available";
 echo  json_encode($res);
 exit;
 }
 
 |