At times we need to add a page content to a email body. Also some time we need to call a api link to get the data. Here is a function which will help you to read the page content of a given link and return the data in an array. So that you can use the data as per your requirement.
/** FUNCTION TO RETURN PAGE CONTENT OF GIVEN URL****/
public function HttpRequest( $url, $method = 'GET', $data = NULL, $additional_headers = NULL, $followRedirects = true )
{
$method = strtoupper($method);
/************************/
/*Parse the given url */
/***********************/
$url_parsed = @parse_url($url);
if (!@$url_parsed['scheme']) $url_parsed = @parse_url('http://'.$url);
/******************************************************************/
/*Extract the parseed url values */
/*It will get the variables $scheme,$host,$port,$user,$pass,$path,$query,$fragment */
/****************************************************************/
extract($url_parsed);
/***********************************************************/
/*Check if any data is there to post along with the url */
/**********************************************************/
if(!is_array($data))
{
$data = NULL;
}else{
$ampersand = '';
$temp = NULL;
foreach($data as $k => $v)
{
$temp .= $ampersand.urlencode($k).'='.urlencode($v);
$ampersand = '&';
}
$data = $temp;
}
/****************************/
/*Manipulate the actual url*/
/***************************/
if(!@$port) $port = 80;
if(!@$path) $path = '/';
if(($method == 'GET') and ($data)) $query = (@$query)?'&'.$data:'?'.$data;
if(@$query) $path .= '?'.$query;
$out = "$method $path HTTP/1.0\r\n";
$out .= "Host: $host\r\n";
if($method == 'POST')
{
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: " . @strlen($data) . "\r\n";
}
$out .= (@$additional_headers)?$additional_headers:'';
$out .= "Connection: Close\r\n\r\n";
if($method == 'POST') $out .= $data."\r\n";
/****************************************************************/
/*Read the page content and generate the array value for return */
/****************************************************************/
if(!$fp = @fsockopen($host, $port, $es, $en, 5)){
return false;
}
fwrite($fp, $out);
while (!feof($fp)) {
$s = fgets($fp, 1024);
if ( $s == "\r\n" ) {
$foundBody = true;
continue;
}
if ( $foundBody ) {
$body .= $s;
} else {
if(($method != 'POST') and ($followRedirects) and (preg_match('/^Location:(.*)/i', $s, $matches) != false) )
{
fclose($fp);
return Company::HttpRequest( trim($matches[1]) );
}
$header .= $s;
if(preg_match('@HTTP[/]1[.][01x][\s]{1,}([1-5][01][0-9])[\s].*$@', $s, $matches))
{
$status = trim($matches[1]);
}
}
}
fclose($fp);
/***************************/
/* Return the result array */
/***************************/
return array('head' => trim($header), 'body' => trim($body), 'status' => status);
}
/**END OF FUNCTION****/
/***************************************/
/*To call the function using get method*/
/***************************************/
$url = 'http://domain/someurl?param1=p1¶m2=p2';
$result = HttpRequest($url);
echo $result['body'];//This will return the page content
/***************************************/
/*To call the function using get method*/
/***************************************/
$url = 'http://domain/someurl';
$postvars=array('param1'=>'p1','param2'=>'p2');
$result = HttpRequest($url,$method='POST',$data=$postvars);
echo $result['body'];//This will return the page content