cURL, and its PHP
extension libcURL, are very useful tools for tasks like simulating a web
browser, submit forms or login to a web service. In this article, I’m going to
show you some amazing things that you can do using PHP and cURL.
Check if a specific website is available
Want to know if a
specific website is available? cURL is here to help. This script can be used
with a cron job to monitor your websites.
Don’t forget to update
the script with the url you want to check on line 3. Once done, just paste it
somewhere and it will let you know about the site availability.
<?php
if
(isDomainAvailible('http://www.css-tricks.com'))
{
echo
"Up and running!";
}
else
{
echo
"Woops, nothing found there.";
}
//returns true, if
domain is availible, false if not
function
isDomainAvailible($domain)
{
//check, if
a valid url is provided
if(!filter_var($domain, FILTER_VALIDATE_URL))
{
return false;
}
//initialize curl
$curlInit =
curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
//get
answer
$response =
curl_exec($curlInit);
curl_close($curlInit);
if ($response) return true;
return
false;
}
?>
cURL replacement
for file_get_contents()
The
file_get_contents()
function is very useful but it is
unfortunely deactivated by default on some webhosts. Using cURL, we can write a
replacement function that works exactly like file_get_contents()
.function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
Get latest Twitter status
Using
PHP and cURL, it is pretty easy to get the status of a specific user. Once you have
it, what about displaying it on your blog, like I do in WPRecipes footer?
function get_status($twitter_id, $hyperlinks = true) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1");
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$src = curl_exec($c);
curl_close($c);
preg_match('/<text>(.*)<\/text>/', $src, $m);
$status = htmlentities($m[1]);
if( $hyperlinks ) $status = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", '<a href="%5C%22%5C%5C0%5C%22">\\0</a>', $status);
return($status);
}
The function is super easy to use:
echo get_status('catswhocode');
Twitter: test friendship between two users
If you
want to know if a specific user is following you (or someone else) you have to
use the Twitter API. This snippet will echo
true
if the two users specified on lines 18 and
19 are friends. It will return false
otherwise.function make_request($url) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
/* gets the match */
function get_match($regex,$content) {
preg_match($regex,$content,$matches);
return $matches[1];
}
/* persons to test */
$person1 = 'phpsnippets';
$person2 = 'catswhocode';
/* send request to twitter */
$url = 'https://api.twitter.com/1/friendships/exist';
$format = 'xml';
/* check */
$persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2);
$result = get_match('/<friends>(.*)<\/friends>/isU',$persons12);
echo $result; // returns "true" or "false"
Download and save images from a page using cURL
Here is a set of functions that can be very useful: Give this
script the url of a webpage, and it will save all images from this page on your
server.
function getImages($html) {
$matches = array();
$regex = '~http://somedomain.com/images/(.*?)\.jpg~i';
preg_match_all($regex, $html, $matches);
foreach ($matches[1] as $img) {
saveImg($img);
}
}
function saveImg($name) {
$url = 'http://somedomain.com/images/'.$name.'.jpg';
$data = get_data($url);
file_put_contents('photos/'.$name.'.jpg', $data);
}
$i = 1;
$l = 101;
while ($i < $l) {
$html = get_data('http://somedomain.com/id/'.$i.'/');
getImages($html);
$i += 1;
}
Convert currencies using cURl and Google
Converting
currencies isn’t very hard to do, but as the currencies fluctuates all the
time, we definitely need to use a service like Google to get the most recent
values. The
currency()
function take 3 parameters: from, to, and
sum.function currency($from_Currency,$to_Currency,$amount) {
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdata = curl_exec($ch);
curl_close($ch);
$data = explode('"', $rawdata);
$data = explode(' ', $data['3']);
$var = $data['0'];
return round($var,2);
}
Get remote filesize using cURL
Want to be able to calculate the size of a specific file? The
following function can help. It takes 3 parameters: the file url, and in case
the file is password protected, a username and a password.
function remote_filesize($url, $user = "", $pw = ""){
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
if(!empty($user) && !empty($pw))
{
$headers = array('Authorization: Basic ' . base64_encode("$user:$pw"));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s([0-9].+?)\s/';
$count = preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : "unknown";
}
FTP upload with cURL
PHP does have a FTP library, but you can also use cURL to upload
files on a FTP server. Here is a working example:
// open a file pointer
$file = fopen("/path/to/file", "r");
// the url contains most of the info needed
$url = "ftp://username:password@mydomain.com:21/path/to/new/file";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// upload related options
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file"));
// set for ASCII mode (e.g. text files)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
$output = curl_exec($ch);
curl_close($ch);
Softcrayons Tech Solutions is a leading IT Training Institute, offer PHP Training in Delhi, Noida, Ghaziabad in very affordable cost. Make a quick call for Demo: (+91)-9136366665, 0120-4328777, 4262233
or visit our office: Plot No. 693 Sector-14A Vasundhara, Ghaziabad
9 comments
Woh!! nice information thanks for share
ReplyAnne Cole
ICT Support Bedfordshire
Providing Industrial Training Programs for students of BE (CS/IT), B.Sc (CS), M.Sc (CS), BCA and MCA. These training will beneficial in future to develop different
ReplyVery nice... easy to known..its useful learn everyone..
Replyany of the thing to buy books best price...
http://biggydeals.com
Please let me know if you're looking for a article writer for your blog. You have some really great articles and I feel I would be a good asset. If you ever want to take some of the load off, I'd love to write some articles for your blog in exchange for a link back to mine. Please send me an email if interested. Cheers! PHP Training in Jalandhar
Replywow great,nowadays this type of blog is more important and informative technology,it was more impressive to read ,which helps to design more in effective ways
ReplyJava Training in Chennai
ReplyIt is really very excellent,i find all articles was amazing.awesome way to get exert tips from everyone,not only i like that post all peoples like that post,because of all given information was wonderful and it's very helpful for me.
dotnet training in Chennai
There are lots of information about latest technology and how to get trained in them, like this have spread around the web, but this is a unique one according to me. The strategy you have updated here will make me to get trained in future technologies. By the way you are running a great blog. Thanks for sharing this.
ReplySAS training in chennai
I have definitely picked up anything new from right here. I did however expertise a few technical points using this site, since I experienced to reload the web site a lot of times previous to I could get it to load correctly.
ReplyLinux Training in Chennai
amazing blog post i really liked it. and more useful information you did. i got lot of knowledgeable information from yours. keep doing more.
ReplyPHP Training Institute in Chennai
Post a Comment