2011-01-28 2 views
3

누군가가 특정 유형의 파일 (예 : ".pdf")을 확인하기 위해 문자열을 가져 와서 함수를 실행하는 방법을 말해 줄 수 있습니까? 문자열에 파일이 포함되어 있으면 링크가 포함 된 앵커에 "pdf"클래스를 적용해야합니다.하이퍼 링크에 특정 파일 확장명이 포함되어있을 때 클래스를 추가하는 방법은 무엇입니까?

<a href="/downloads/myfile.pdf">My PDF</a> 

내가 그것을이 변경 될 싶습니다 : 여기

은 문자열의 예입니다

<a href="/downloads/myfile.pdf" class="pdf">My PDF</a> 

답변

8

CSS에서이 작업을 수행 :

a[href$=".pdf"] { 
    /* some rules */ 
} 

하지만이 월 일부 브라우저에서는 지원되지 않습니다.

$('a[href$=".pdf"]').addClass('pdf'); // in jQuery 

또는 라이브러리없이

가 :

var elems = document.getElementByTagName('a'); 
for (var i = 0; i < elems.length; ++i) { 
    var a = elems[i]; 
    if (/\.pdf$/.test(a.href)) { 
     a.className = 'pdf'; 
    } 
} 
+0

응답 해 주셔서 감사합니다. 그것들은 좋은 솔루션이지만, IE6/7 (CSS가 필요하지 않음)에서 지원되어야하며 JS없이 이것을 수행 할 수 있기를 바라고 있으므로이를 적용하기 위해 서버 측 코드를 사용합니다. PHP와 잘 어울린다. ;) – Cofey

0

(<a\s+href="[^"]*\.([A-Za-z0-9]{2,5})\s*")([^>]*>) \1 class="\2" \3

파이썬 코드로 대체합니다

또한, jQuery를 또는 라이브러리, 자바 스크립트에서이 작업을 수행

import re,sys 
file = sys.argv[1] 
f = open(file, 'r') 
text = f.read() 
f.close() 
text = re.sub(r'(<a\s+href="[^"]*\.([A-Za-z0-9]{2,5})\s*")([^>]*>)', r'\1 class="\2" \3', te$ 
f = open(file+'.re','w') 
f.write(text) 
f.close() 

정적 인 HTML을 수정하는 데 사용할 수 있습니다.

관련 문제