0

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

您知道如何正确使用 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:// 协议与否,它们是绝对链接。链接由系统中的用户添加

4

1 回答 1

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']变量,但您应该使用您自己的链接 from 作为$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链接)。

于 2013-06-07T09:09:18.157 回答