3

Hi i need to detect and convert urls images and video from plain text urls

Html

<div id="content-url">
 Hello World<br>
 http://www.goalterest.com/  <br>
 http://www.esotech.org/wp-content/uploads/2011/12/jquery_logo.png
 http://www.esotech.org/wp-content/uploads
</div>

Jquery

var urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var photoRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]).(?:jpg|gif|png)/ig;

  var url_url= $('#content-url').html().match(urlRegex);
var url_photo= $('#content-url').html().match(photoRegex);

  var convert_url='<a href="'+url_url+'">'+url_url+'</a>';
var convert_photo='<img src="'+url_photo+'" width="150" height="150" alt="Nba">';
$('#content-url').append(convert_url);
$('#content-url').append(convert_photo);

Here Demo http://jsfiddle.net/nqVJc/3/

In the demo i get the way to detect and convert to url and photo but the problem ist when ist there multiple urls The Urls are not separated

4

2 に答える 2

2

一致した要素を反復処理していません:

$.each( url_url, function(i,value){
   var convert_url='<a href="'+url_url[i]+'">'+url_url[i]+'</a>';
   var convert_photo='<img src="'+url_photo[i]+'" width="150" height="150" alt="Nba">';
   $('#content-url').append(convert_url,convert_photo)
});

これがデモです。

一致するURLを削除するには、次の前に次の行を追加する必要があります$.each

$('#content-url').html( $('#content-url').html().replace(urlRegex,''));

//$.each goes here
于 2012-06-09T13:14:18.617 に答える
0

正規表現が改善される可能性があります。URI.jsは、 URLを抽出するためのURI.withinString()を提供します。ここで使用されている正規表現はgruberが改訂されています:

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig
于 2012-06-19T08:46:36.133 に答える