【发布时间】:2013-07-24 01:11:18
【问题描述】:
如果文本前有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 css-tricks.com/snippets/jquery/target-only-external-links 说明了这些,看起来你对技术#3 很感兴趣
-
谢谢,但这是一个 Wordpress 网站,我使用的是 PHP,而不是 jQuery。
-
WordPress 使用 jQuery 和 PHP,所以我不知道你说的“不使用”jQuery 是什么意思
-
对不起,我知道,但我的意思是它不是一个函数,我可以把它放在
functions.php中并直接使用它。 -
好吧,如果你放弃
functions.php的做法,有一些不错的 jQuery 可以用 Regex 完全相同的方式处理这个问题。一切顺利,我会回来看看你是否找到了一种使用纯 PHP 的方法(我也确信这很有可能)