matthew
matthew

Reputation: 377

Retrieve data from url and save in php

I am trying to retrieve the html from file get contents in php then save it to a php file so I can include it into my homepage.

Unfortunately my script isn't saving the data into the file. I also need to verwrite this data on a daily basis as it will be setup with a cron job.

Can anyone tell me where I am going wrong please? I am just learning php :-)

<?php 
$richSnippets = file_get_contents('http://website.com/data');
$filename = 'reviews.txt';
$handle = fopen($filename,"x+");
$somecontent = echo $richSnippets;
fwrite($handle,$somecontent);
echo "Success";
fclose($handle);
?> 

Upvotes: 0

Views: 15362

Answers (2)

Wezy
Wezy

Reputation: 667

A couple of things,

http://website.com/data gets a 404 error, it doesn't exist.

Change your code to

$site = 'http://www.google.com';
$homepage = file_get_contents($site);
$filename = 'reviews.txt';
$handle = fopen($filename,"w");
fwrite($handle,$homepage);
echo "Success";
fclose($handle);

Remove $somecontent = echo $richSnippets; it doesn't do anything.

if you have the proper permissions it should work.

Be sure that your pointing to an existing webpage.

Edit

When cURL is enabled you can use the following function

function get_web_page( $url ){
  $options = array(
    CURLOPT_RETURNTRANSFER => true,     // return web page
    CURLOPT_HEADER         => false,    // don't return headers
    CURLOPT_FOLLOWLOCATION => true,     // follow redirects
    CURLOPT_ENCODING       => "",       // handle all encodings
    CURLOPT_USERAGENT      => "spider", // who am i
    CURLOPT_AUTOREFERER    => true,     // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
    CURLOPT_TIMEOUT        => 120,      // timeout on response
    CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
  );

  $ch      = curl_init( $url );
  curl_setopt_array( $ch, $options );
  $content = curl_exec( $ch );
  curl_close( $ch );

  return $content;
}

Now change

$homepage = file_get_contents($site);

in to

$homepage = get_web_page($site);

Upvotes: 7

mariobgr
mariobgr

Reputation: 2201

You should use / instead of ****

$homepage = file_get_contents('http://website.com/data');

Also this part

$somecontent = echo $richSnippets;

I don't see $richSnippets above... it's probably not declared?

You probably want to do this:

fwrite($handle,$homepage);

Upvotes: 0

Related Questions