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

Posted

技术标签:

【中文标题】当包含特定文件扩展名时,如何将类添加到超链接?【英文标题】:How to add a class to a hyperlink when it contains a specific file extension? 【发布时间】:2011-06-17 08:57:50 【问题描述】:

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

这是一个字符串的例子:

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

我想改成这样:

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

【问题讨论】:

【参考方案1】:

在 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。 ;)【参考方案2】:

(&lt;a\s+href="[^"]*\.([A-Za-z0-9]2,5)\s*")([^&gt;]*&gt;) 替换为 \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静态

【讨论】:

以上是关于当包含特定文件扩展名时,如何将类添加到超链接?的主要内容,如果未能解决你的问题,请参考以下文章

仅当子容器具有内容时,如何将类添加到特定的父元素

单击内部复选框时,使用jQuery将类添加到包含li

如何将类添加到特定的 html 元素,如果它们包含某个值

如何将类文件夹添加到 Eclipse 中?

html 超链接,当鼠标指针悬浮到超链接时,显示出下拉菜单

搜索包含列表中的单词并具有特定文件扩展名的文件名