将class =“external”附加到已发布且不属于域的链接的php代码是什么。
例如,我的网站是www.mysite.com,您发布了指向www.mysite.com/news的链接以及指向www.yoursite.com的链接
如何设置它以便只有非“mysite.com”链接指定了类?
答案 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()