【问题标题】: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>

【问题讨论】:

    标签: php javascript jquery css regex


    【解决方案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静态

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 2022-01-25
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多