14b1f463b517c6f40dd50ed9244a5e5a3f9856eb
[scuttle] / ajaxGetTitle.php
1 <?php
2 /***************************************************************************
3 Copyright (c) 2005 - 2010 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/plain; 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 require_once 'header.inc.php';
26
27 function getTitle($url) {
28     $fd = @fopen($url, 'r');
29     if ($fd) {
30         $html = fread($fd, 1750);
31         fclose($fd);
32
33         // Get title from title tag
34         preg_match_all('/<title>(.*)<\/title>/si', $html, $matches);
35         $title = $matches[1][0];
36
37         // Get encoding from charset attribute
38         preg_match_all('/<meta.*charset=([^;"]*)">/i', $html, $matches);
39         $encoding = strtoupper($matches[1][0]);
40
41         // Convert to UTF-8 from the original encoding
42         if (function_exists('mb_convert_encoding')) {
43             $title = @mb_convert_encoding($title, 'UTF-8', $encoding);
44         }
45
46         if (utf8_strlen($title) > 0) {
47             return $title;
48         } else {
49             // No title, so return filename
50             $uriparts = explode('/', $url);
51             $filename = end($uriparts);
52             unset($uriparts);
53
54             return $filename;
55         }
56     } else {
57         return false;
58     }
59 }
60 echo getTitle($_GET['url']);

Benjamin Mako Hill || Want to submit a patch?