Comments 45
Главное, что радует. Что даже в таком небольшом кусочке кода не поленились написать комментарии.
Спасибо)
Впервые услышал о Goo.gl. И только по коду понял, о чем речь :) Спасибо за комментарии в коде. Написано просто и понятно.
думаю надо дописать что требуется к этому классу
например php-extension curl итп
Ну вроде отсюда:

if (!function_exists('curl_init')) 
    trigger_error('CURL is not installed');   


это будет и так всем понятно.
ledworm верно подметил, все что не касается curl — есть по дефолту при установке. Ну если вдруг кому понадобится не ошибка, а первичные требования — добавил в конец.
Вот как использовать — имхо кому что. Я использую для того, чтобы обернуть в такой вид все ссылки, которые отличаются от основного домена, при генерации страницы.
Не, я скорее именно про способ использования — в ручную ему url вставлять или повесить на кнопку в браузере или ещё что?
murka3000, Вы издеваетесь?

пункт 1.

private static $_urlregex = '/(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?(?:(?:[-\w]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?/';


Пункт 2.

public static function shortText($input_text)  
    { 
        return preg_replace_callback( 
                    self::$_urlregex,  
                    __CLASS__.'::shortURL',  
                    $input_text 
                ); 
    } 


вывод — ссылки ему подставлять не надо. ему надо дать текст с ссылками.
Я может, конечно, с утра плохо соображаю, но непонятно как раз «ему надо дать текст с ссылками». Где давать?!
UFO landed and left these words here
Если бы Вы в конце кода добавили строчку, как пример использования:
echo GoogleURL::shortURL(«habrahabr.ru/blogs/google/105546»);
То у меня бы вопросов не возникало, я бы не нахватал минусов и, к тому же, не выглядел бы идиотом.
Я и не спорю, что справляется. Я всего лишь подчеркнул с каким методом нужно работать.
Возможен случай, что на сервере не доступен curl. Если бы можно было применить какую ни будь альтернативу — было бы очень даже кстати.
Спасибо. Выглядит и правдо симпатично, сохраню в коллекцию полезностей.
private static $_urlregex = '/(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?(?:(?:[-\w]+\.)+(?:ru|su|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?/';
OMG… неужели попроще нельзя из текста ссылки выбирать?
интересно, автор топика зачем-то добавил в код ru|su|, хотя эти зоны и так захватываются через [a-z]{2}
без кеширования, имхо, не имеет смысла. при том кешировать стоит, наверное, не только отрендеренный текст (что можно делать уже в приложении), но и отправленные-полученные урлы. например, в тексте может несколько раз встречатся ссылка на одно и то же место.
не хватает проверки на то, не сокращена ли уже ссылка.

по хорошему — надо было бы это сделать без статики с возможность наследования. скажем, абстрактный класс UrlShortener, а от него уже наследовать всякие goo.gl, j.mp и остальные. И сразу сделать несколько классов для выбора, может кому-то не нравится goo.gl, т.к. надо не больше четырех символов.
Ну оригинал никто не скрывал )))

return (isset( $output->short_url ))? $output->short_url: $url;

эта строчка, к примеру, исправлена. Т.к. Она имела отношение к оригиналу — то внес изменение.

Моя модификация еще не завершена и второсортный продукт показывать смысла не вижу. А этого будет достаточно для затей у других + класс достаточен.
я заметил, ссылку взял из вашего сообщения. да, в строчке ошибка была
Меня также посетила подобная мысль (про несколько сервисов). Проблема сейчас одна — неимение времени, но зачатки модуля для Drupal 7 уже заложены.

При моей реализации (то, как я применил на сайте) — все урлы, которые попадают из стороны и отличаются от базового домена я перевожу в короткие, сохраняя их при этом в БД. shortText не юзаю, а вот shortURL на ура. При этом, есть косяк — при большом изобилии ссылок наткнетесь на квоту. Потому просто текст обрабатывать… ну у меня через раз работало…
я так понимаю, надо парсить пост при его добавлении, а не когда выводишь. но, по хорошему, лучше пользоваться своим сокращателем. как на хабре: habr.ru/p/105546/. Не будете зависеть от других служб.
По логике да — парсить надо при сохранении. Но на практике только этим не отделаться (в начале). Да и вопрос еще тот — а оно вам точно надо? Это ведь дорогостоящая операция получается.

дык если бы всем надо было писать свои сокращатели — то не нужны бы были другие сервисы. Вас силком никто не заставляет использовать…
вы мне так отвечаете, словно я вас критикую. просто обсуждаю тему, предлагаю варианты.
вы молодец, что не сидите на месте, а что-то делаете
А я всегда рад критике. Она заставляет мозги шевелиться ;)
в последнее время гугл отказывается обрабатывать ссылки после некоторого числа обработок. на примере моего собственного сайта — почти на всех популярных записях гугл короткую ссылку не отдает, а пишет про ошибку квота екседед. итого как вывод: данный класс бесполезен без без кеширования полученных ссылок, иначе гугл вас забанит.
Only those users with full accounts are able to leave comments. Log in, please.