ITmembers.net 아카이브 · 2002–2009

질문과 답변

[re] [질문]게시판글 안에 경로를 넣고 싶습니다.

> 병목님..
> 밑에 안된다고 하던거
> apm 다시 까니까 말끔히 해결되었습니다
> 그래서 이제 view.php 까지 진도가 나갔습니다.
> 그런데 만들다가 의문이 하나 들어서.......
>
> 보통 윈도우프로그램안에 보면
>
> 글쓰다가
> \\test_server ... 이렇게 쓰기시작하면 자동적으로 파란줄이 되면서
> 경로를 지정하게 되잖아요...
> 만약
>
> \\server\test.avi 이렇게 적어놓으면 클릭할수있게 되고
> 자동적으로 avi 가 열리는데
> 이런식으로 동작할수있게 해줄수는 없나요..?


이건 매우 고난이도 문제인데요... ^^
제가 질문을 제대로 이해했는지 모르겠지만,
사용자가 쓴 글 내용을 분석해서 특정한 패턴이 있을 경우 이를 자동적으로 인식하도록 만드는 것으로 이해하겠습니다.
예를 들어 사용자가 쓴 글 내용 중에http://www.itmembers.net 이라는 문자열을 만나면 자동으로 링크를 걸어주는 것. 즉 http://로 시작하는 모든 문자열은 그 문자열의 끝까지 링크를 걸어주는 것이죠.
상당히 어려운 문제입니다.
웹 프로그래밍의 특성상 특히 사용자가 글을 쓰는 동안 실시간으로 점검하기는 거의 불가능합니다.
다만 사용자가 입력한 글을 보여 줄 때(예를 들어 view.php) 특정 패턴을 발견하면 바꿔줄 수는 있습니다. 그러나 쉽지는 않습니다.

참고로 다음 코드는 제로보드에서 URL이나 이메일 주소를 만나면 자동으로 링크를 걸어주는 함수입니다.

// URL, Mail을 자동으로 체크하여 링크만듬
function autolink($str) {
        // URL 치환
        $homepage_pattern = "/([^\"\'\=\>])(mms|http|HTTP|ftp|FTP|telnet|TELNET)\:\/\/(.[^ \n\<\"\']+)/";
        $str = preg_replace($homepage_pattern,"\\1<a href=/board/\\2:/\\3 target=_blank>\\2://\\3</a>", " ".$str);
                // 메일 치환
        $email_pattern = "/([ \n]+)([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/";
        $str = preg_replace($email_pattern,"\\1<a href=mailto:\\2@\\3>\\2@\\3</a>", " ".$str);

        return $str;
}

이렇게 특정 문자열의 패턴을 보고 바꿔주는 기능을, "정규 표현식"이라고 합니다.
PHP에서 정규 표현식을 제대로 익히려면 좀더 많은 공부가 필요합니다.
나중에 시간을 내어 별도의 강좌를 만들어서 설명드릴 수밖에 없네요. 간단하게 설명드려서 될 일은 아니구요...

댓글 1