그누보드
그누보드 사용자들을 위한 정보 공유 공간! 설치, 테마, 플러그인, 커스터마이징 팁 등 그누보드에 대한 모든 것을 이야기해보세요!
2025.02.22 00:00
URL 자동 링크 함수
GNUBoards는 PHP 기반의 게시판 소프트웨어로, 다양한 기능을 제공합니다. URL 자동 링크 함수는 사용자가 입력한 텍스트 내의 URL을 자동으로 링크로 변환하는 기능입니다.
함수 소스 코드
함수 설명
* `global $g5;` : `$g5` 변수를 전역 변수로 선언합니다.
* `global $config;` : `$config` 변수를 전역 변수로 선언합니다.
* `$attr_nofollow` : `check_html_link_nofollow` 함수가 존재하고 `url_auto_link` 함수를 호출할 경우 `rel=\"nofollow\"` 속성을 추가합니다.
텍스트 처리
* `str_replace` 함수를 사용하여 특수 문자를 HTML 엔티티로 변환합니다.
URL 자동 링크
* `preg_replace` 함수를 사용하여 URL을 자동으로 링크로 변환합니다.
* `i` 플래그를 사용하여 대소문자를 구분하지 않습니다.
* `{$config['cf_link_target']}` : `$config` 변수의 `cf_link_target` 키 값을 사용하여 링크를 열 때의 타겟을 지정합니다.
이메일 자동 링크
* `preg_replace` 함수를 사용하여 이메일 주소를 자동으로 링크로 변환합니다.
* `i` 플래그를 사용하여 대소문자를 구분하지 않습니다.
반환
* `run_replace` 함수를 호출하여 `$str` 변수의 내용을 반환합니다.
예제
URL 자동 링크 함수를 사용하여 사용자가 입력한 텍스트 내의 URL을 자동으로 링크로 변환할 수 있습니다. 이 함수는 이메일 주소도 자동으로 링크로 변환합니다.
[PHP] preg_replace - 정규 표현식 검색 및 바꾸기 수행
[PHP] mail - 메일 보내기
[PHP] link - 하드 링크 생성
[PHP] glob - 패턴과 일치하는 경로 이름 찾기
[PHP] function_exists - 주어진 함수가 정의되어 있으면 true를 반환합니다.
그누보드:url_auto_link() URL 자동 링크 기능
- 나우호스팅 21일 전 2025.02.22 00:00
-
18
0
/*
* 그누보드 원본 코드 분석 (LGPL 라이선스 적용)
* 출처: https://github.com/gnuboard/gnuboard5
* 라이선스: GNU General Public License v2.0 또는 그 이후 버전
*/
function url_auto_link($str)
{
global $g5;
global $config;
// 140326 유창화님 제안코드로 수정
// http://sir.kr/pg_lecture/461
// http://sir.kr/pg_lecture/463
$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);
//$str = preg_replace("`(?:(?:(?:href|src)s*=s*(?:"|'|)){0})((http|https|ftp|telnet|news|mms)://[^"'s()]+)`", "\1", $str);
$str = preg_replace("/([^(href="?'?)|(src="?'?)]|(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9.-]+.[가-힣xA1-xFEa-zA-Z0-9.:&#!=_?/~+%@;-|,()]+)/i", "\1\2", $str);
$str = preg_replace("/(^|["'s(])(www.[^"'s()]+)/i", "\1\2", $str);
$str = preg_replace("/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "\0", $str);
$str = str_replace(array("t_nbsp_t", "t_lt_t", "t_gt_t", "'"), array(" ", "<", ">", "'"), $str);
/*
// 속도 향상 031011
$str = preg_replace("/</", "t_lt_t", $str);
$str = preg_replace("/>/", "t_gt_t", $str);
$str = preg_replace("/&/", "&", $str);
$str = preg_replace("/"/", """, $str);
$str = preg_replace("/ /", "t_nbsp_t", $str);
$str = preg_replace("/([^(http://)]|(|^)(www.[^[:space:]]+)/i", "\1\2", $str);
//$str = preg_replace("/([^(HREF="?'?)|(SRC="?'?)]|(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9.-]+.[xA1-xFEa-zA-Z0-9.:&#=_?/~+%@;-|,]+)/i", "\1\2", $str);
// 100825 : () 추가
// 120315 : CHARSET 에 따라 링크시 글자 잘림 현상이 있어 수정
$str = preg_replace("/([^(HREF="?'?)|(SRC="?'?)]|(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9.-]+.[가-힣xA1-xFEa-zA-Z0-9.:&#=_?/~+%@;-|,()]+)/i", "\1\2", $str);
// 이메일 정규표현식 수정 061004
//$str = preg_replace("/(([a-z0-9_]|-|.)+@([^[:space:]]*)([[:alnum:]-]))/i", "\1", $str);
$str = preg_replace("/([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*.[a-z]{2,4})/i", "\1", $str);
$str = preg_replace("/t_nbsp_t/", " " , $str);
$str = preg_replace("/t_lt_t/", "<", $str);
$str = preg_replace("/t_gt_t/", ">", $str);
*/
return run_replace('url_auto_link', $str);
}
URL 자동 링크 함수
GNUBoards는 PHP 기반의 게시판 소프트웨어로, 다양한 기능을 제공합니다. URL 자동 링크 함수는 사용자가 입력한 텍스트 내의 URL을 자동으로 링크로 변환하는 기능입니다.
함수 소스 코드
#hostingforum.kr
php
function url_auto_link($str)
{
global $g5;
global $config;
// ...
}
함수 설명
* `global $g5;` : `$g5` 변수를 전역 변수로 선언합니다.
* `global $config;` : `$config` 변수를 전역 변수로 선언합니다.
* `$attr_nofollow` : `check_html_link_nofollow` 함수가 존재하고 `url_auto_link` 함수를 호출할 경우 `rel=\"nofollow\"` 속성을 추가합니다.
텍스트 처리
#hostingforum.kr
php
$str = str_replace(array("<", ">", "&", """, " ", "'"), array("t_lt_t", "t_gt_t", "&", "\"", "t_nbsp_t", "'"), $str);
* `str_replace` 함수를 사용하여 특수 문자를 HTML 엔티티로 변환합니다.
URL 자동 링크
#hostingforum.kr
php
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9.-]+.[가-힣xA1-xFEa-zA-Z0-9.:&#=_?/~+%@;\-\|,\(\)]+)/i", "\1", $str);
* `preg_replace` 함수를 사용하여 URL을 자동으로 링크로 변환합니다.
* `i` 플래그를 사용하여 대소문자를 구분하지 않습니다.
* `{$config['cf_link_target']}` : `$config` 변수의 `cf_link_target` 키 값을 사용하여 링크를 열 때의 타겟을 지정합니다.
이메일 자동 링크
#hostingforum.kr
php
$str = preg_replace("/([0-9a-z]([-_\.]?[0-9a-z])*@[0-9a-z]([-_\.]?[0-9a-z])*.[a-z]{2,4})/i", "\1", $str);
* `preg_replace` 함수를 사용하여 이메일 주소를 자동으로 링크로 변환합니다.
* `i` 플래그를 사용하여 대소문자를 구분하지 않습니다.
반환
#hostingforum.kr
php
return run_replace('url_auto_link', $str);
* `run_replace` 함수를 호출하여 `$str` 변수의 내용을 반환합니다.
예제
#hostingforum.kr
php
$str = "http://example.com";
echo url_auto_link($str); // http://example.com
$str = "example@example.com";
echo url_auto_link($str); // example@example.com
URL 자동 링크 함수를 사용하여 사용자가 입력한 텍스트 내의 URL을 자동으로 링크로 변환할 수 있습니다. 이 함수는 이메일 주소도 자동으로 링크로 변환합니다.
이 게시물에 포함된 라이브러리
[PHP] str_replace - 검색 문자열의 모든 발생을 대체 문자열로 바꿉니다.[PHP] preg_replace - 정규 표현식 검색 및 바꾸기 수행
[PHP] mail - 메일 보내기
[PHP] link - 하드 링크 생성
[PHP] glob - 패턴과 일치하는 경로 이름 찾기
[PHP] function_exists - 주어진 함수가 정의되어 있으면 true를 반환합니다.
댓글목록
등록된 댓글이 없습니다.