PHPは、非構内外部リンクのインスタンスコードの削除を実現します。


一般的にウェブサイトのシステムを作る時、最適化などの要素を考慮して追加する必要がある時に、本サイトではないリンクを削除します。この要求に対してPHPに文章の内容を処理させて、文章の外部リンクの自動削除の効果に達することができます。
この実例コードは主に、紡夢CMSコンテンツ管理システムの外部チェーン削除方法を参照する。
/**
 * 
 *
 * @access    public
 * @param     string  $body 
 * @param     array  $allow_urls 
 * @return    string
 */
function Replace_Links( &$body, $allow_urls=array()  )
{
    $host_rule = join('|', $allow_urls);
    $host_rule = preg_replace("#[
\r]#", '', $host_rule);
    $host_rule = str_replace('.', "\\.", $host_rule);
    $host_rule = str_replace('/', "\\/", $host_rule);
    $arr = '';
    preg_match_all("#<a([^>]*)>(.*)<\/a>#iU", $body, $arr);
    if( is_array($arr[0]) )
    {
        $rparr = array();
        $tgarr = array();
        foreach($arr[0] as $i=>$v)
        {
            if( $host_rule != '' && preg_match('#'.$host_rule.'#i', $arr[1][$i]) )
            {
                continue;
            } else {
                $rparr[] = $v;
                $tgarr[] = $arr[2][$i];
            }
        }
        if( !empty($rparr) )
        {
            $body = str_replace($rparr, $tgarr, $body);
        }
    }
    $arr = $rparr = $tgarr = '';
    return $body;
}