将_blank目标添加到外部链接

时间:2013-06-07 08:42:13

标签: php

我只是想知道如果链接指向外部域(_self用于内部),如何将_blank目标类型添加到链接。我通过检查网址来做到这一点,但它实际上是硬编码的,不能重复用于其他网站。

您是否知道如何使用PHP正确地完成它?

$target_type=(strpos($ref, $_SERVER['HTTP_HOST'])>-1 
|| strpos($ref,'/')===0? '_self' : '_blank');

if ($ref<>'#' && substr($ref,0,4)<>'http') $ref='http://'.$ref;
$array['href']=$ref;
if (substr($ref,0,1)<>'#') $array['target']= $target_type;
$array['rel']='nofollow';
if (empty($array['text'])) $array['text']=str_replace('http://','',$ref);

这仅适用于主域,但在使用 domain.com/friendlyurl / 时,无效。

提前致谢

注意:链接可以包含是否为http://协议,它们用作绝对链接。用户在系统中添加链接

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用parse_url功能。对我来说,它应该是这样的:

<?php
$link = $_GET['link'];
$urlp = parse_url($link);
$target = '_self';
if (isset($urlp['host']) && $urlp['host'] != $_SERVER['HTTP_HOST'])
{
  if (preg_replace('#^(www.)(.*)#D','$2',$urlp['host']) != $_SERVER['HTTP_HOST'] && preg_replace('#^(www.)(.*)#D','$2',$_SERVER['HTTP_HOST']) != $urlp['host'])
    $target = '_blank';
}
$anchor = 'LINK';

// creating html code
echo $target.'<br>';
echo '<a href="' . $link . '" target="' . $target . '">' . $link . '</a>';

在此代码中,我使用$_GET['link']变量,但您应使用自己的链接作为$link的值。您可以在此处查看此脚本:http://kolodziej.in/help/link_target.php?link=http://blog.kolodziej.in/2013/06/i-know-jquery-not-javascript/(返回_blank链接),http://kolodziej.in/help/link_target.php?link=http://kolodziej.in/(返回_self链接)。