5

さて、pies.comやwww.cakes.comなどのほとんどのURLを実際のリンクタグに変換するために正常に機能するこの関数を作成しました。

function render_hyperlinks($str){       
    $regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
    $str = preg_replace($regex,"'<a href=\"http://www.'.'$3'.'\" target=\"_blank\">'.strtolower('$3').'</a>'", $str);
    return $str;    
}

no-followこの関数を更新して、競合他社へのリンクにタグを追加したいと思います。

だから私は特定のキーワード(競合他社の名前)をフォローする必要があります。たとえば、私のサイトがベーキングに関するものである場合、次のようにします。

no-follow any sites with the phrases 'bakingbrothers', 'mrkipling', 'lyonscakes'

if(contains x){ add y}これを正規表現に実装することは可能ですか?

これは「ルックバック」と呼ばれるものですか?

4

1 に答える 1

2

おそらく preg_replace_callback が探しているものです:

function link($matches)
{
    $str_return = '<a href="http://www.'.$matches[3].'" target="_blank"';
    if(in_array($matches[3], $no_follow_array))
    {
        $str_return .= ' no-follow';
    }
    $str_return .='>'.strtolower($matches[3]).'</a>';
}

$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
$str = preg_replace_callback($regex,'link', $str);
于 2010-07-16T08:19:48.790 に答える