팁과노하우

2024.10.30 16:39

자동링크 함수 정규식 수정 (Url 뒤에 괄호 등이 붙는경우 처리방식 개선)

그누보드 원본에서 제공하는 자동링크 관련 입니다.


2.1 패치에 포함하려고 했으나 수정해야되는 파일이 그누보드에서 업데이트가 자주 있는 핵심파일이라

선택적으로 사용하실 수 있도록 코드를 알려드립니다.


문제) @bank365님 제보

댓글 등에서 http, https 를 포함한 링크 삽입시 아래와같은 형태인경우

(https://naver.com) 마지막의 괄호가 포함되어 링크가 만들어지는 문제.


해결)

/lib/common.lib.php 256라인 의 함수를 아래와 같이 변경해주세요.

Url 마지막에 ) ] } 문자가 있을때 링크에 포함하지 않습니다.



function url_auto_link($str)
{
    global $g5;
    global $config;


    $attr_nofollow = (function_exists('check_html_link_nofollow') && check_html_link_nofollow('url_auto_link')) ? ' rel="nofollow"' : '';
    $str = str_replace(array("<", ">", "&", """, " ", "'"), array("t_lt_t", "t_gt_t", "&", """, "t_nbsp_t", "'"), $str);
    
    // 정규식 수정: URL 마지막에 ) ] } 문자가 올 경우 제외
    $str = preg_replace("/([^(href="?'?)|(src="?'?)]|(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9.-]+.[가-힣xA1-xFEa-zA-Z0-9.:&#!=_?/~+%@;-|,]+)(?<![)]}])/i", "\1<A HREF="\2" TARGET="{$config['cf_link_target']}" $attr_nofollow>\2</A>", $str);
    
    $str = preg_replace("/(^|["'s(])(www.[^"'s()]+)/i", "\1<A HREF="http://\2" TARGET="{$config['cf_link_target']}" $attr_nofollow>\2</A>", $str);
    $str = preg_replace("/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "<a href="mailto:\0" $attr_nofollow>\0</a>", $str);
    $str = str_replace(array("t_nbsp_t", "t_lt_t", "t_gt_t", "'"), array("&nbsp;", "&lt;", "&gt;", "&#039;"), $str);


    return run_replace('url_auto_link', $str);
}

감사합니다.

  • 공유링크 복사
  • profile_image
    리빌더미니홈 1:1 대화하기 @master 구독 35명
  • 그누보드 리빌더는, 그누보드의 기능을 모두 그대로 사용하면서 폴더의 추가만으로 손쉽게 웹사이트를 완성하고 다양한 편의기능을 사용할 수 있습니다. 고도화는 계속 진행됩니다.
    미니홈 쪽지 구독하기
    구독하고 알림받기