[완료] regex / 대화창에서 URL과 E-mail 링크 추출하는 방법
글쓴이: antz / 작성시간: 금, 2009/05/22 - 7:57오후
추출해야 하는 것 :www.domain.com
<a href="http://www.domain.com" rel="nofollow">http://www.domain.com</a>
<a href="http://www.domain.com/~abc?xxx=ddd&xxx2=ddd2" rel="nofollow">http://www.domain.com/~abc?xxx=ddd&xxx2=ddd2</a>
user@domain.com
위에 예로 든 것들이 대화중 섞여 있다면
regex를 어떻게 사용하는게 좋을까요?
프로그램상에서 받아서 URL은<a href="www.domain.com">www.domain.com</a>
e-mail은<a href="mailto:user@domain.com>user@domain.com</a>
이렇게 치완해서 보여 주려고 합니다.
다음 코드는 Cocoa(Objective-C)의 코드입니다.
"< code >" 는 indent가 안먹는군요.
"[ code ]" 는 Objective-C의 구문이 "["를 많이 써서 이상하게 되는것 같고요.
텍스트로 같은 코드 입니다.
int i=0; for(i=0;i<[word count]; i++ ) { NSString *emailString = @"([a-zA-Z0-9._%+-]+[@]{1}[a-zA-Z0-9._%+-~#%^&*\\/]+)"; if ( [[word objectAtIndex:i] isMatchedByRegex:emailString] == YES ) { NSString *replacementString = @"<a href=\"mailto:$1\">$1</a>"; [final addObject:[[word objectAtIndex:i] stringByMatching:emailString replace:RKReplaceAll withReferenceString:replacementString]]; } else { NSString *urlString = @"(((https?|ftp|gopher|telnet|file|notes|ms-help):(//|\\\\)){0,1}[a-zA-Z0-9._%+-]+[.]{1}[a-zA-Z0-9._%+-~#%^&*\\/]+)"; if ( [[word objectAtIndex:i] isMatchedByRegex:urlString] == YES ) { NSString *replacementString = @"<a href=\"$1\" target=\"_blank\">$1</a>"; [final addObject:[[word objectAtIndex:i] stringByMatching:urlString replace:RKReplaceAll withReferenceString:replacementString]]; #ifdef DEBUG NSLog(@"URL Exist!!!"); #endif } else { [final addObject:[word objectAtIndex:i]]; } } }
이것 저것 찾아서 해보다가 대충 위처럼 했는데...
대충 되는것 같지만... "..."을 URL로 처리해 버린다는 버그를 받았네요.
<a href="...">...</a>
이렇게 된다는...
File attachments:
첨부 | 파일 크기 |
---|---|
kldp001.png | 30.77 KB |
Forums:
http://kldp.net/plugins/scmcv
http://kldp.net/plugins/scmcvs/cvsweb.php/jsboard-2.1/include/parse.php?rev=1.9;cvsroot=jsboard 에서 auto_link() 함수 참고하세요. GPL 이라면 그냥 들고 사용하시는 것이 더 좋을 겁니다. 제가 생각하기에 제가 만든 것 중에 최고의 작품이라고 생각하는 놈이라서.. 외국에서도 문의가 많이 오는 function 입니다. 속도도 좋으니 그냥 들고 사용하셔도 무방할 겁니다.
iso3166 도메인을
iso3166 도메인을 정규식에 넣어버리면 퀄리티가 끝내주죠.
예를들어kldp.org라고써도 구분해 냅니다.
js : http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=31418&sca=&sfl=wr_subject&stx=3166&sop=and
php : http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59174&sca=&sfl=wr_subject&stx=pcre&sop=and
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/
https://xenosi.de/
두분 글
두분 글 감사합니다.
아직 제대로 보지 못했지만,
우선 고맙다는 말씀을 드립니다. :-)
---
모두 참고해서 어느정도 해결을 했습니다.
고맙습니다. :-)
Blog : http://lum7671.wordpress.com, http://lum7671.egloos.com
Lum7671's Weblog
댓글 달기