Как стать автором
Обновить

Комментарии 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 
                ); 
    } 


вывод — ссылки ему подставлять не надо. ему надо дать текст с ссылками.
Я может, конечно, с утра плохо соображаю, но непонятно как раз «ему надо дать текст с ссылками». Где давать?!
НЛО прилетело и опубликовало эту надпись здесь
Если бы Вы в конце кода добавили строчку, как пример использования:
echo GoogleURL::shortURL(«habrahabr.ru/blogs/google/105546»);
То у меня бы вопросов не возникало, я бы не нахватал минусов и, к тому же, не выглядел бы идиотом.
А зачем это делать?
вам еще рано это знать
А функцию file_fet_contents('http://goo.gl/api/shorten?...'); можно юзать?
прошу прощения file_get_contents
можно, только отправлять данные нужно через POST.
file_get_content() с лёгкостью справляется с отправкой данных методом POST
Я и не спорю, что справляется. Я всего лишь подчеркнул с каким методом нужно работать.
curl быстрее, зачем?
Возможен случай, что на сервере не доступен 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}
а как же поддержка доменов в $_urlregex на нац. языках?
допишите. в чем проблема?
без кеширования, имхо, не имеет смысла. при том кешировать стоит, наверное, не только отрендеренный текст (что можно делать уже в приложении), но и отправленные-полученные урлы. например, в тексте может несколько раз встречатся ссылка на одно и то же место.
не хватает проверки на то, не сокращена ли уже ссылка.

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

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

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

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

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

дык если бы всем надо было писать свои сокращатели — то не нужны бы были другие сервисы. Вас силком никто не заставляет использовать…
вы мне так отвечаете, словно я вас критикую. просто обсуждаю тему, предлагаю варианты.
вы молодец, что не сидите на месте, а что-то делаете
А я всегда рад критике. Она заставляет мозги шевелиться ;)
в последнее время гугл отказывается обрабатывать ссылки после некоторого числа обработок. на примере моего собственного сайта — почти на всех популярных записях гугл короткую ссылку не отдает, а пишет про ошибку квота екседед. итого как вывод: данный класс бесполезен без без кеширования полученных ссылок, иначе гугл вас забанит.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории