开发者

jquery regex in string (text and image)

I need need 2 things in jQuery (twitter like)

  1. regex a normal link
  2. check if the link is an image or an website/doc/etc (so i can use a lightbox or s开发者_运维问答omething).

for example i have the following text from a json object:

Hi i created this http://flicker.com/image and i went to http://www.google.com #home #alone

  1. the link must be checked if the content is an image
  2. the A element must be added.
  3. the hashtag '#' must also be linked.

I have a little knowledge about jQuery and i edited/created the following script (maybe not nice but at this moment it is working)

var username='yourname'; // set user name
var format='json'; // set format, you really don't have an option on this one
var url='http://api.twitter.com/1/statuses/user_timeline/'+username+'.'+format+'?callback=?'; // make the url
var count = 0; // Start from 0
var maxTweet = 10; // Maximum tweets (max limit is 15)
$.getJSON(url,function(tweet){ // get the tweets
    $.each( tweet, function(i, l){
        var month1 = {}; // building my month array
        month1['Jan'] = '01';
        month1['Feb'] = '02';
        month1['Mar'] = '03';
        month1['Apr'] = '04';
        month1['May'] = '05';
        month1['Jun'] = '06';
        month1['Jul'] = '07';
        month1['Aug'] = '08';
        month1['Sep'] = '09';
        month1['Oct'] = '10';
        month1['Nov'] = '11';
        month1['Dec'] = '12';
        var d = tweet[count].created_at; // getting date
        var d = d.split(" "); // Splitting date
        var e = tweet[count].created_at.split(" "); // Splitting date
        var a = d[1]; // Month
        var month = month1[a]; // still month
        var d = d[5] + '-' + month + '-' + d[2] + 'T' + d[3] + 'Z' + d[4]; // date like 30-05-2011T13:45:45Z+1000
        var date = prettyDate(d); // using prettyDate founded on the Web
        if(count < maxTweet){
        if(date = 'undefined'){
            var date = e[2] + '-' + month + '-' + e[5] + ' om ' + e[3];
        } // if it is out of range
    $("#twitter .slides_container").append('<p> <a href="http://twitter.com/#!/' + tweet[count].user.name + '" target="_blank"><img src="' + tweet[count].user.profile_image_url + '" alt="' + tweet[count].user.name + '" class="twitpic"></a> ' + tweet[count].text + '<br /><em>' + date + '</em></p>')
}
    });
count++;
});

tweet[count].text = where i need the regex

edited (count++;)


You may find something like this useful, to link up your tweets.

html = tweet[count].text
    .replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@@#\/%?=~_|!:,.;]*[-A-Z0-9+&@@#\/%=~_|])/ig, '<a href="$1" target="_blank" rel="nofollow">$1</a>')
    .replace(/(?:^| )[@]+(\w+)/ig, ' @<a href="http://www.twitter.com/$1" class="user" target="_blank" rel="nofollow">$1</a>')
    .replace(/(?:^| )[#]+([\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/ig, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all" class="hash" target="_blank" rel="nofollow">#$1</a>');

Unfortunately you don't always know what's at the end of the URL without going there (which is what you would need to do to implement your lightbox feature) unless you make some assumptions such as if the link contains .jpg etc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜