如果文本前有http://
,我正在使用regex
将纯文本更改为url。这工作正常,但我不想让他们成为一个链接,如果这个链接是internal
(所以包含我的网站名称的链接)... 所以我只希望它发生,如果它是一个外部链接。外部链接的正则表达式:如何为我自己的链接创建一个例外?
我该怎么做?我尝试在http之前添加一个!
,但它不起作用。有人可以帮我吗?这是我在用的:
function wpse107488_urls_to_links($string) {
$string = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2", $string);
$string = preg_replace("/([\w]+:\/\/[\w-?&;%#~=\.\/\@]+[\w\/])/i", "<a target=\"_blank\" title=\"" . __('Visit Site', 'your-textdomain') . "\" href=\"$1\">$1</a>", $string);
return $string;
}
编辑:我使用的是不同的功能,可从我的内部链接太多的链接(也应该是这样),但我认为这两个功能是相互阻塞其他。这就是为什么我给我的所有内部链接上课。我可以使用这些类排除它们吗?
你可以尝试各种不同的技术。这里有一个很好的链接,用jQuery来说明这些问题http://css-tricks.com/snippets/jquery/target-only-external-links/,好像你在技术#3中的相关内容 – sulfureous
谢谢,但它是一个WordPress站点我正在使用PHP,而不是jQuery。 – Johan
WordPress使用jQuery和PHP,所以我不知道你的意思是“不使用”jQuery – sulfureous