如何在包含特定文件扩展名的超链接中添加类?

问题描述:

有人能告诉我如何接受一个字符串并运行一个函数来检查特定类型的文件(比如“.pdf”)。如果字符串包含文件,则需要将“pdf”类应用于包含该链接的锚点。如何在包含特定文件扩展名的超链接中添加类?

下面是一个字符串的例子:

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

我想它改成这样:

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

在CSS中这样做:

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

但这可能不被某些浏览器支持。

另外,这样做在Javascript中,使用jQuery或任何库:

$('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 2011-01-28 16:47:12

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

Python代码:

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 static