Найдите хештеги в твиттере с помощью jQuery и примените ссылку - PullRequest
7 голосов
/ 06 февраля 2011

Я хотел бы начать с того, что я не профессионал в jQuery, и это кажется нестандартным вопросом.

По сути, я делаю блог в WordPress и включаю его в цикл, который показывает твиты из моего профиля в Twitter. Я хотел бы знать, как выбрать хэштеги из этих твитов (например, #foo), а затем применить html-ссылку на хэш-тег следующим образом ...

<a class="hashtag" href="http://twitter.com/#search?q=foo">#foo</a>

Ссылка также должна помещать значение хэштега (без знака #) в #search? Q = часть ссылки.

Возможно ли это, и если да, то как мне поступить?

Спасибо, Чарли Райан

EDIT:

Хештег #foo будет частью h1, без тегов, отличающих одно слово, например

<h1>Lorem ipsum dolor sit amet #foo et adipiscing</h1>

Так что в основном мне нужно найти все строки, начинающиеся с #, и заменить их ссылкой, как показано выше.

Ответы [ 3 ]

17 голосов
/ 06 февраля 2011

Вы должны создать регулярное выражение, чтобы найти эти хэштеги и заменить их ссылкой, используя обратные ссылки, чтобы получить соответствующий тег.

hashtag_regexp = /#([a-zA-Z0-9]+)/g;

function linkHashtags(text) {
    return text.replace(
        hashtag_regexp,
        '<a class="hashtag" href="http://twitter.com/#search?q=$1">#$1</a>'
    );
} 

$(document).ready(function(){
    $('p').each(function() {
        $(this).html(linkHashtags($(this).html()));
    });
});

Редактировать : я переместилсоответствующий код внутри функции, которая принимает строку с хэштегами и возвращает ту же строку с тегами, замененными ссылками.Таким образом, он не полагается на jQuery.

$('p').html(linkHashtags($('p').html()));

Вы просто передаете ему значение html элементов и заменяете значение результатом вызова linkHashtags.Можно было бы написать плагин jQuery, чтобы упростить его использование.

Пример

Это регулярное выражение может потребовать некоторой работы, я не уверен, какие символы разрешеныдля использования внутри хэштега, но я думаю, вы поняли.

2 голосов
/ 06 февраля 2011

Вам не нужно возиться со сложными регулярными выражениями.Когда вы запрашиваете пользовательскую временную шкалу из API Twitter с помощью / statuses / user_timeline, вы можете установить для параметра include_entities значение true.См. Эту страницу документации:

http://dev.twitter.com/doc/get/statuses/user_timeline

Это добавит объект JSON в каждый твит, называемый сущностью.Сущность будет содержать все подробности о каждом хэштеге в твите, все аккуратно проанализировано для вас.Вы получите текст хэштега, его начальную и конечную позиции в твите.Вы можете просто заменить связанную версию тега обратно в текст перед его отображением.

0 голосов
/ 06 февраля 2011

Почему вы хотите сделать это с помощью jQuery? Используйте плагин Wordpress: Twittify! Этот плагин просто превращает Twitter @usernames и `#hashtags в ссылки на соответствующее место в Twitter.

Вы всегда должны сводить изменения в DOM к минимуму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...