当超链接包含特定文件扩展名时,如何将类添加到超链接?

3

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

以下是一个字符串的示例:

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

我希望将其更改为以下内容:
<a href="/downloads/myfile.pdf" class="pdf">My PDF</a>
2个回答

8
在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';
    }
}

感谢您的回复。那些是很好的解决方案,但需要在IE6/7中支持(因此不能使用CSS),而且我希望能够在没有任何JS的情况下完成这个操作,因此使用服务器端代码来应用它 - 我只是不太擅长PHP。;) - Cofey

0

(<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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接