trunk, branches/version-0.7:
[scuttle] / ajaxGetTitle.php
1 <?php
2 /***************************************************************************
3 Copyright (C) 2005 - 2006 Scuttle project
4 http://sourceforge.net/projects/scuttle/
5 http://scuttle.org/
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20 ***************************************************************************/
21
22 header('Content-Type: text/xml; charset=UTF-8');
23 header("Last-Modified: ". gmdate("D, d M Y H:i:s") ." GMT");
24 header("Cache-Control: no-cache, must-revalidate");
25
26 require_once('header.inc.php');
27
28 function getTitle($url) {
29     $fd = @fopen($url, 'r');
30     if ($fd) {
31         $html = fread($fd, 1750);
32         fclose($fd);
33
34         // Get title from title tag
35         preg_match_all('/<title>(.*)<\/title>/si', $html, $matches);
36         $title = $matches[1][0];
37
38         // Get encoding from charset attribute
39         preg_match_all('/<meta.*charset=([^;"]*)">/i', $html, $matches);
40         $encoding = strtoupper($matches[1][0]);
41
42         // Convert to UTF-8 from the original encoding
43         if (function_exists('mb_convert_encoding')) {
44             $title = @mb_convert_encoding($title, 'UTF-8', $encoding);
45         }
46
47         if (utf8_strlen($title) > 0) {
48             return $title;
49         } else {
50             // No title, so return filename
51             $uriparts = explode('/', $url);
52             $filename = end($uriparts);
53             unset($uriparts);
54
55             return $filename;
56         }
57     } else {
58         return false;
59     }
60 }
61 echo '<?xml version="1.0" encoding="utf-8"?>';
62 ?>
63 <response>
64   <method>getTitle</method>
65   <result><?php echo getTitle($_GET['url']); ?></result>
66 </response>

Benjamin Mako Hill || Want to submit a patch?