주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

입력된 글에 자동으로 링크걸기 (autolink)

네로 | 2001.10.18 23:56:24 댓글: 0 조회: 659 추천: 15
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1758834
▶ 입력된 글에 자동으로 링크걸기 (autolink)


메모장이나 게시판 등에 주소가 입력되었을 경우 자동으로 링크를 걸어주는 방법을
소개할까 합니다. 기존에 쓰이지 않은 비혼만의 방법이지요. [다른 사람들이 어떻게
하는지 본 경우가 없어서 잘 모르지만요. ^^ 제로보드의 경우는 정규표현식을 쓰는것
같던데...]

암튼 시작을 해볼까요?

먼저 주소는 http://로 시작됩니다. 이렇게 시작된 값은 http://dreamphp.com과 같이
일정한 형식이 있죠. 본문에 이런 주소가 많을 경우 이런 형식에 일치하는 주소를
모두 찾아 앞뒤에 링크 태그를 붙여주기만 하면 끝납니다.


직접 예를 들어 설명하는게 좋을 것 같습니다.


예제 본문입니다.
--------------------------------------------------------------------------------
안녕하세요! 비혼입니다.
일교차가 심해 감기에 걸리는 사람들이 많군요. 감기조심하세요~~~
비혼의 조그만 세상의 홈페이지 주소는 http://dreamphp.com입니다.
엔지오는 http://nzeo.com 인거 다들 아시죠? 흑협은 http://phptip.com이 주소입니다.
제 개인 홈페이지요? http://user.chollian.net/~mysoulstar입니다.
無란 한자가 참 인상적인 곳이죠. 하핫. 썰렁해서 볼것도 없습니다만
사랑해주셨으면 좋겠습니다.
아참. 강의용 메모장도 애용해주세요.
메모장 주소 : http://dreamphp.com/study2/memo/new_memo.php
깜짝퀴즈) http://를 붙이는 이유는 뭘까?
--------------------------------------------------------------------------------

이 본문이 $string이란 변수에 저장되어 있다고 가정합시다. 그럼 이 본문을
"http://"라는 문자열을 이용해 분리하면 어떻게 될까요? explode("http://",$string)
바로 아래처럼 7개의 배열로 분리됩니다.

--------------------------------------------------------------------------------
[0]
안녕하세요! 비혼입니다.
일교차가 심해 감기에 걸리는 사람들이 많군요. 감기조심하세요~~~
비혼의 조그만 세상의 홈페이지 주소는

[1]
dreamphp.com입니다.
엔지오는

[2]
nzeo.com 인거 다들 아시죠? 흑협은

[3]
phptip.com이 주소입니다.
제 개인 홈페이지요?

[4]
user.chollian.net/~mysoulstar입니다.
無란 한자가 참 인상적인 곳이죠. 하핫. 썰렁해서 볼것도 없습니다만
사랑해주셨으면 좋겠습니다.
아참. 강의용 메모장도 애용해주세요.
메모장 주소 :

[5]
dreamphp.com/study2/memo/new_memo.php
깜짝퀴즈)

[6]
를 붙이는 이유는 뭘까?
--------------------------------------------------------------------------------

제일 처음의 배열값은 필요가 없습니다. 위의 결과화면을 보면 쉽게 알겠죠?

그럼 두번째 배열값부터 마지막 배열값까지 문자열을 체크합니다.

해당 배열의 문자열 처음부터 마지막까지 한글자씩 읽어와 공백이거나 일반 아스키값
범위를 넘어가면 증가를 종료합니다.

그리고 그때까지 증가된 값을 이용해 처음 위치부터 구해진 값 위치까지의 문자열을
반환받도록 합니다.

[1] 배열의 경우를 볼까요?

dreamphp.com까지는 무사히 진행됩니다. 하지만 그 바로 뒤 "입"이라는 글자에 가서는
아스키값이 127이 넘기 때문에 종료되게 됩니다. 그럼 dreamphp.com까지가 주소가
된다는 소리겠죠?

[2] 배열의 경우에는 nzeo.com 다음에 공백이 있으므로 거기서 종료. [3]의 경우에는
phptip.com 다음에 "이"가 쓰여 phptip.com까지. [4]의 경우는 "입" 전까지. [5]의
경우엔 당연히 "깜" 전까지. [6]은 바로 종료되는군요.

이렇게 구해진 문자열을 이용해 앞뒤에 링크 태그를 넣어 교체만 하면 끝납니다.
설명은 장황했지만 코드는 간단합니다.


[autolink.php]
--------------------------------------------------------------------------------
<?

function autolink ($string) { // 문자열을 인자로 받음
  $temp = explode("http://",$string); // http:// 기준으로 문자열을 자름 [배열로 저장]
  $size = sizeof($temp); // 배열의 크기를 구함
  for ($i=1; $i<$size; $i++) { // 두번째 배열값부터 마지막 배열값까지 반복
    $len = strlen($temp[$i]); // 해당 배열의 길이 구함
    for ($j=0; $j<$len; $j++) { // 처음부터 길이까지 반복
      if ($temp[$i][$j]==" " || ord($temp[$i][$j])>127) break; // 공백이나 아스키값이 127 이상이면  종료
    }
    if ($j) { // 만약 증가된 값이 있다면
      $link = "http://".substr($temp[$i],0,$j); // 해당 위치까지의 문자열에 http://를 붙여 저장
      $change[$link] = "<a href='$link' target='_blank'>$link</a>"; // 이를 첨자로 하여 링크건 형태로 값 저장
    }
  }
  return strtr($string,$change); // 위에서 구한 값을 이용해 문자열 중 주소를 교체후 반환
}

$string = "안녕하세요! 비혼입니다.
일교차가 심해 감기에 걸리는 사람들이 많군요. 감기조심하세요~~~
비혼의 조그만 세상의 홈페이지 주소는 http://dreamphp.com입니다.
엔지오는 http://nzeo.com 인거 다들 아시죠? 흑협은 http://phptip.com이 주소입니다.
제 개인 홈페이지요? http://user.chollian.net/~mysoulstar입니다.
無란 한자가 참 인상적인 곳이죠. 하핫. 썰렁해서 볼것도 없습니다만
사랑해주셨으면 좋겠습니다.
아참. 강의용 메모장도 애용해주세요.
메모장 주소 : http://dreamphp.com/study2/memo/new_memo.php
깜짝퀴즈) http://를 붙이는 이유는 뭘까?";

echo "<h4>원문</h4>n";
echo "<pre>$string</pre>";
echo "n<hr>n";

$string2 = autolink($string); // 함수 호출

echo "<h4>변경</h4>n";
echo "<pre>$string2</pre>";

?>
--------------------------------------------------------------------------------
- 미리보기 : http://dreamphp.com/study2/autolink/autolink.php
- 소스보기 : http://dreamphp.com/study2/autolink/autolink.phps

[※ 참고로 다음줄(n) 등은 신경쓰지 않았습니다.]


어때요? 괜찮지 않나요?


▶ 직접 실행결과를 보신 다음 소스를 차근차근 살펴보도록 하세요. 이번 강의글에
쓰인 함수는 PHP 함수 이야기(http://nzeo.com/bbs/zboard.php?id=p_function)
게시판에 올려두도록 하겠습니다.

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:07)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >> 웹 프로그래밍
* 이동후 위치 : 웹 공부 >>

* 전설님에 의해서 게시물 이동되었습니다 (2004-05-30 17:12)
* 이동한 이유 :
* 원래의 위치 : 웹 공부 >>
* 이동후 위치 : 웹 공부 >> 웹 프로그래밍
추천 (15) 선물 (0명)
첨부파일 다운로드 ( 1 )
autolink.zip | 4.3KB / 11 Download
IP: ♡.156.♡.178
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11866
관리자
2003-09-20
11414
관리자
2003-09-20
20547
지구인
2010-08-27
19343
지구인
2009-09-07
13663
SOLIDH
2010-01-29
15622
엔죠라이프
2004-10-07
16718
노아
2001-10-27
554
노아
2001-10-27
525
노아
2001-10-27
462
노아
2001-10-27
2893
네로™
2001-10-26
958
네로™
2001-10-22
1748
네로™
2001-10-22
1671
네로™
2001-10-21
2929
네로™
2001-10-21
1594
네로™
2001-10-21
540
네로
2001-10-18
659
네로
2001-10-18
530
네로
2001-10-18
1672
네로
2001-10-18
1159
네로
2001-10-18
544
네로
2001-10-18
1033
네로
2001-10-18
957
네로
2001-10-18
2436
광수
2001-10-17
530
광수
2001-10-17
485
광수
2001-10-17
424
모이자 모바일