【问题标题】:Append class="external" to external links将 class="external" 附加到外部链接
【发布时间】:2011-02-05 17:17:09
【问题描述】:

将 class="external" 附加到已发布但不是域的链接的 php 代码是什么。

例如,我的网站是 www.mysite.com,您发布了指向 www.mysite.com/news 的链接和指向 www.yoursite.com 的链接

如何设置它以便只有非“mysite.com”链接指定类?

【问题讨论】:

  • 你能发布你的代码来显示链接吗?另一个好的解决方案是使用 JavaScript 并解析 dom 以检查链接是否是您的域,如果不是,请添加适当的 class="external"
  • @Ivo Sabev,javascript 解决方案的问题是它们可以在浏览器中禁用,因此不会在所有情况下都应用该样式。
  • @Rob 如果他不在乎,这是最简单的解决方案。其他人依赖他的 PHP 代码,如果我们看不到,我们就不能说什么。
  • 这里的评论系统不同。我在下面发布了我的回复。

标签: php css class hyperlink


【解决方案1】:

一种方法是检查“http://”(或“https://”)的 URL 内容

事实上,还要检查它是否不包含您的域名(以防您可能拥有完全限定的内部链接。)

在 PHP 中,使用strpos()

也可以使用相同的通用技术在客户端进行处理。 (JQuery 是一个显而易见的选择,因为它涉及添加一个类。)

【讨论】:

【解决方案2】:

还可以使用正则表达式来测试您的域名是否存在于 url 中,如果为 false 则为外部。 php的函数是preg_match()

【讨论】:

    【解决方案3】:

    另一种方法是使用 CSS3 选择器,但 Internet Explorer 6 不支持它们(请参阅:http://www.webdevout.net/browser-support-css#css3selectors):

        // external link style
        a:link[href^="http://"] {
            background-color: #990000;
        }   
        // internal link style
        a:link, a:link[href^="http://www.mydomain.com"] {
            background-color: #009900;
            color: #000000;
        }
    

    您无需以编程方式更改链接!

    <a href="somelink.htm">some link</a>
    <a href="http://www.mydomain.com/anotherlink.htm">another link</a>
    

    ... 会产生一个内部链接样式的链接。

    <a href="http://www.otherdomain.com">external link</a>
    

    ... 会产生一个带有外部链接样式的链接。

    【讨论】:

    • .postbitlegacy .content a:link[href^="http://"] { background:url("images/TW7S_Windows7/External-Links.png") 无重复滚动右中透明;填充:0 13px;这行得通,但它仍然把它放在图片(外部)上。 :(
    【解决方案4】:

    不要使用正则表达式解析 html。真的。 RegEx match open tags except XHTML self-contained tags

    使用这样的 DOM 解析器: http://simplehtmldom.sourceforge.net/

    $html = $xxxx //load it from your db or wherever it is
    $dom = new simple_html_dom();
    $dom->load($html);
    foreach($dom->find('a') as $a) {
      $a->class = 'external';
    }
    

    完成!

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 2013-12-18
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多