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']変数を使用していますが、 の値として独自のリンクを使用する必要があります$link。このスクリプトはこちらで確認できます: http://kolodziej.in/help/link_target.php?link=http://blog.kolodziej.in/2013/06/i-know-jquery-not-javascript/ (return _blankリンク)、http: //kolodziej.in/help/link_target.php?link=http://kolodziej.in/ (_self リンクを返す)。

于 2013-06-07T09:09:18.157 に答える