将class =“external”附加到外部链接

时间:2010-04-08 13:48:50

标签: php css class hyperlink

将class =“external”附加到已发布且不属于域的链接的php代码是什么。

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

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

4 个答案:

答案 0 :(得分:4)

另一种方法是使用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>

...会产生外部链接样式的链接。

答案 1 :(得分:1)

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

事实上,还要检查它是否包含您的域名(如果您可能拥有完全合格的内部链接。)

在PHP中,使用strpos()

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

答案 2 :(得分:1)

不要使用正则表达式解析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';
}

完成!

答案 3 :(得分:0)

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