From 833537692e62db2a7dea1c9eb74b79c5311fc39b Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Mon, 9 May 2016 21:39:18 +0200 Subject: [PATCH] Move URL title method to dedicated class --- src/SemanticScuttle/UrlHelper.php | 65 +++++++++++++++++++++++++++++++ www/ajaxGetTitle.php | 50 ++---------------------- 2 files changed, 69 insertions(+), 46 deletions(-) create mode 100644 src/SemanticScuttle/UrlHelper.php diff --git a/src/SemanticScuttle/UrlHelper.php b/src/SemanticScuttle/UrlHelper.php new file mode 100644 index 0000000..5417b9b --- /dev/null +++ b/src/SemanticScuttle/UrlHelper.php @@ -0,0 +1,65 @@ + + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Work with URLs + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_UrlHelper +{ + function getTitle($url) + { + $fd = @fopen($url, 'r'); + $title = ''; + if ($fd) { + $html = fread($fd, 1750); + fclose($fd); + + // Get title from title tag + preg_match_all('/]*>(.*)<\/title>/si', $html, $matches); + $title = $matches[1][0]; + + $encoding = 'utf-8'; + // Get encoding from charset attribute + preg_match_all('//i', $html, $matches); + if (isset($matches[1][0])) { + $encoding = strtoupper($matches[1][0]); + } + + // Convert to UTF-8 from the original encoding + if (function_exists("mb_convert_encoding")) { + $title = @mb_convert_encoding($title, 'UTF-8', $encoding); + } + + $title = trim($title); + } + + if (utf8_strlen($title) > 0) { + $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); + return $title; + } else { + // No title, so return filename + $uriparts = explode('/', $url); + $filename = end($uriparts); + unset($uriparts); + + return $filename; + } + } +} +?> diff --git a/www/ajaxGetTitle.php b/www/ajaxGetTitle.php index e1fbe30..b95e29b 100644 --- a/www/ajaxGetTitle.php +++ b/www/ajaxGetTitle.php @@ -27,53 +27,11 @@ require_once 'www-header.php'; /* Managing all possible inputs */ isset($_GET['url']) ? define('GET_URL', $_GET['url']): define('GET_URL', ''); +$urlhelper = new SemanticScuttle_UrlHelper(); -function getTitle($url) { - $fd = @fopen($url, 'r'); - if ($fd) { - $html = fread($fd, 1750); - fclose($fd); - - // Get title from title tag - preg_match_all('/(.*)<\/title>/si', $html, $matches); - $title = $matches[1][0]; - - $encoding = 'utf-8'; - // Get encoding from charset attribute - preg_match_all('/<meta.*charset=([^;"]*)">/i', $html, $matches); - if (isset($matches[1][0])) { - $encoding = strtoupper($matches[1][0]); - } - - // Convert to UTF-8 from the original encoding - if (function_exists("mb_convert_encoding")) { - $title = @mb_convert_encoding($title, 'UTF-8', $encoding); - } - - $title = trim($title); - - if (utf8_strlen($title) > 0) { - $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8'); - return $title; - } else { - // No title, so return filename - $uriparts = explode('/', $url); - $filename = end($uriparts); - unset($uriparts); - - return $filename; - } - } else { - return false; - } -} -echo '<?xml version="1.0" encoding="utf-8"?>'; +echo '<?xml version="1.0" encoding="utf-8"?>' . "\n"; ?> <response> -<method> -getTitle -</method> -<result> -<?php echo getTitle(GET_URL); ?> -</result> + <method>getTitle</method> + <result><?php echo htmlspecialchars($urlhelper->getTitle(GET_URL)); ?></result> </response>