내가 무엇을 검색하는지 모르기 때문에 정확히 무엇을 해야할지 말하기가 다소 힘듭니다.
링크가 현재 태그의 일부인 경우 간단합니다.
그러나 이미지 href가 현재 어떤 태그에도 포함되어 있지 않은 것처럼 들립니다. 그게 맞습니까?
그렇다면, 당신은 당신이, 당신은
var result = text.match(/http:\/\/\S+(\.png|\.jpg|\.gif)/g);
을 (이것은 내가 확실히 비트를 조여있어 수있는 간단한 일이다. 그것은이기 때문에, 그것을 시도 할 수있는 레지 애 썼는데 필요가 있다고 생각
'http : //'와 '.png'또는 '.jpg'또는 '.gif'를 제외한 공백 문자 이외의 문자를 검색합니다. 예를 들어, href에 '공백'문자가 허용되지 않습니다. 결과 배열을 반환합니다.
그래서 경우에 검색 텍스트이었다 :
var text = 'http://sstatic.net/so/img/logo.png some text http://l.yimg.com/a/i/ww/news/2010/02/22/fries_on_plate-pd.jpg more text http://l.yimg.com/this/is/another/path/to_this_image.jpg';
그것은 3 개 결과의 배열을 반환합니다. jQuery를 사용
(당신이 그것을 태그 때문에) 당신이 다음 수 : 몸에,이 경우, 새로운 태그를 추가합니다
var $aTag;
for(i in result) {
$aTag = $('<a><img src="/SomeDefaultImageThumb.jpg" /></a>').attr({'href': result[i]});
$('body').append($aTag);
}
.
편집 : 귀하의 예제를 사용하여, 나는 검색 쿼리의 주위에 괄호를 추가하고, 대체 문자열에서 "$ 1"= href가 그것을 참조 -
괄호의 추가 세트가 검색 문자열에 추가되었습니다. $ 1에 의해 참조 된 '암기 된'그룹이 만들어집니다. 악성 코드가 연결 문자열에 숨겨진 할 수있는 경우
$("div.test").each(function() {
$(this).html($(this).html().replace(/(http:\/\/\S+(\.png|\.jpg|\.gif))/g, '<a href="$1"><img src="/SomeDefaultImageThumb.jpg" /></a>'));
});
이 보안에 미치는 영향을있을 수 있습니다. 확실하지. 그것이 문제라면, 그것에 대해 갈 다른 방법이 있어야합니다.
편집 : 사이트의 도메인 에서 제외하는 HREF (그들이 검색되는 동일한 텍스트의 일부 가정).
var hostname = window.location.hostname.replace(/\./g,'\\.');
var re = new RegExp('(http:\\/\\/[^' + hostname + ']\\S+[\\.png|\\.jpg|\\.gif])','g');
$("div.test").each(function() {
$(this).html($(this).html().replace(re, '<a href="$1"><img src="/SomeDefaultImageThumb.jpg" /></a>'));
});
예 그렇습니다. 그러나 나는 작은 문제가 있습니다. 클래스 "test"와 함께 3 개의 div가 추가되었으며 각 링크에는 그림 링크가 있고 세 번째 항목에는 .txt가 있습니다. http://www.google.com/logo처럼 확장자가 없어도 본문에 추가됩니다. 그리고 그 링크를 $ a 태그로 대체하는 방법을 알려 줄 수 있습니까 감사합니다. 정말로 감사합니다. – Kenan
예. 그러나 당신이 3 개의 div를 가지고 있고 각각이 그림 링크를 가지고 있다고 말할 때, 당신은 무엇을 의미합니까. 사진 링크가 div 내부의 텍스트입니까, 아니면 div의 속성입니까? – user113716
이들은 사용자 의견이며 각 "div.comment"는 단지 링크 만 포함 할 수 있지만 "bla bla h tt p : //sstatic.net/so/img/logo.png bla bla"... 또는 기타 어떤 사용자가 추가 할 수 있습니다. – Kenan