Комментарии 45
Главное, что радует. Что даже в таком небольшом кусочке кода не поленились написать комментарии.
Спасибо)
Спасибо)
Спасибо.
Впервые услышал о Goo.gl. И только по коду понял, о чем речь :) Спасибо за комментарии в коде. Написано просто и понятно.
думаю надо дописать что требуется к этому классу
например php-extension curl итп
например php-extension curl итп
как это использовать?
Вот как использовать — имхо кому что. Я использую для того, чтобы обернуть в такой вид все ссылки, которые отличаются от основного домена, при генерации страницы.
Не, я скорее именно про способ использования — в ручную ему url вставлять или повесить на кнопку в браузере или ещё что?
murka3000, Вы издеваетесь?
пункт 1.
Пункт 2.
вывод — ссылки ему подставлять не надо. ему надо дать текст с ссылками.
пункт 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»);
То у меня бы вопросов не возникало, я бы не нахватал минусов и, к тому же, не выглядел бы идиотом.
echo GoogleURL::shortURL(«habrahabr.ru/blogs/google/105546»);
То у меня бы вопросов не возникало, я бы не нахватал минусов и, к тому же, не выглядел бы идиотом.
А зачем это делать?
вам еще рано это знать
А функцию file_fet_contents('http://goo.gl/api/shorten?...'); можно юзать?
прошу прощения file_get_contents
можно, только отправлять данные нужно через POST.
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… неужели попроще нельзя из текста ссылки выбирать?
а как же поддержка доменов в $_urlregex на нац. языках?
без кеширования, имхо, не имеет смысла. при том кешировать стоит, наверное, не только отрендеренный текст (что можно делать уже в приложении), но и отправленные-полученные урлы. например, в тексте может несколько раз встречатся ссылка на одно и то же место.
не хватает проверки на то, не сокращена ли уже ссылка.
по хорошему — надо было бы это сделать без статики с возможность наследования. скажем, абстрактный класс UrlShortener, а от него уже наследовать всякие goo.gl, j.mp и остальные. И сразу сделать несколько классов для выбора, может кому-то не нравится goo.gl, т.к. надо не больше четырех символов.
не хватает проверки на то, не сокращена ли уже ссылка.
по хорошему — надо было бы это сделать без статики с возможность наследования. скажем, абстрактный класс UrlShortener, а от него уже наследовать всякие goo.gl, j.mp и остальные. И сразу сделать несколько классов для выбора, может кому-то не нравится goo.gl, т.к. надо не больше четырех символов.
хотя, я так понял, вы только комменты на русский перевели
Увы, не только.
просто я глянул и сходу не обнароужил различий в сравнении с оригиналом
Ну оригинал никто не скрывал )))
return (isset( $output->short_url ))? $output->short_url: $url;
эта строчка, к примеру, исправлена. Т.к. Она имела отношение к оригиналу — то внес изменение.
Моя модификация еще не завершена и второсортный продукт показывать смысла не вижу. А этого будет достаточно для затей у других + класс достаточен.
return (isset( $output->short_url ))? $output->short_url: $url;
эта строчка, к примеру, исправлена. Т.к. Она имела отношение к оригиналу — то внес изменение.
Моя модификация еще не завершена и второсортный продукт показывать смысла не вижу. А этого будет достаточно для затей у других + класс достаточен.
Меня также посетила подобная мысль (про несколько сервисов). Проблема сейчас одна — неимение времени, но зачатки модуля для Drupal 7 уже заложены.
При моей реализации (то, как я применил на сайте) — все урлы, которые попадают из стороны и отличаются от базового домена я перевожу в короткие, сохраняя их при этом в БД. shortText не юзаю, а вот shortURL на ура. При этом, есть косяк — при большом изобилии ссылок наткнетесь на квоту. Потому просто текст обрабатывать… ну у меня через раз работало…
При моей реализации (то, как я применил на сайте) — все урлы, которые попадают из стороны и отличаются от базового домена я перевожу в короткие, сохраняя их при этом в БД. shortText не юзаю, а вот shortURL на ура. При этом, есть косяк — при большом изобилии ссылок наткнетесь на квоту. Потому просто текст обрабатывать… ну у меня через раз работало…
я так понимаю, надо парсить пост при его добавлении, а не когда выводишь. но, по хорошему, лучше пользоваться своим сокращателем. как на хабре: habr.ru/p/105546/. Не будете зависеть от других служб.
По логике да — парсить надо при сохранении. Но на практике только этим не отделаться (в начале). Да и вопрос еще тот — а оно вам точно надо? Это ведь дорогостоящая операция получается.
дык если бы всем надо было писать свои сокращатели — то не нужны бы были другие сервисы. Вас силком никто не заставляет использовать…
дык если бы всем надо было писать свои сокращатели — то не нужны бы были другие сервисы. Вас силком никто не заставляет использовать…
в последнее время гугл отказывается обрабатывать ссылки после некоторого числа обработок. на примере моего собственного сайта — почти на всех популярных записях гугл короткую ссылку не отдает, а пишет про ошибку квота екседед. итого как вывод: данный класс бесполезен без без кеширования полученных ссылок, иначе гугл вас забанит.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PHP class для Goo.gl