티스토리 뷰

 
 

요즘 SNS에서 많이 사용하고 있는 사람부르는 맨션하기(@)와 링크이동을 쉽게해주고 그룹핑해주는 태그(#)를 구현했습

니다. 최근들어 찾으시는 분들이 간혹 계시던데 제가 SNS 프로젝트 하면서 작업했던 함수 올려드려요. 긴 문자열에서 #태그 추출하는 정규식과 @맨션 추출하는 정규식 함수입니다.  preg_match_all 을 이용하여 작업했구요. 입맛에 맞게 수정해서 사용하시면 될꺼 같습니다. 

 

 function tag_string($string){ 
 	$re = '/(#[0-9a-zA-Z가-힣ㄱ-ㅎ]*)/ui'; 
    $str = $string; 
    preg_match_all($re, $str, $matches); 
    $change = array(); 
    foreach ( $matches[0] as $s ) 
    	$change[$s] = "<a href=''><strong style='color:#6699CC;'>".$s."</strong></a>"; 
        echo strtr($str,$change).''; 
 } 
 function nickname_tag_string($string){ 
 	$re = '/(@[0-9a-zA-Z가-힣ㄱ-ㅎ]*)/ui'; 
 	$str = $string; preg_match_all($re, $str, $matches); 
    $change = array(); 
    foreach ( $matches[0] as $s ) 
    $change[$s] = "<strong style='color:#aaa;'>".$s."</strong>";
    echo strtr($str,$change).''; 
 } 

 

첨삭으로 PHPSCHOOL에 알릭님이 만드신 js 버전 추출문도 올려드려요.

 

 

HTML 

<input cols="33" rows="5" id="txt"> 하하하 블라블라 #잡담, #태그, #추출 #흠냐리#이어짐 #abcd </input> <br /> <button id="getTag">해쉬태그뽑기</button> <br /><br /> 추출된 태그: <div id="tags"></div> 

 

JS 

 

 $("#getTag").on("click", function() { 
 	var txt = $("#txt").val(); 
    var tags = []; 
    
    txt = txt.replace(/#[^#\s,;]+/gm, function(tag) { tags.push(tag); }); $("#tags").html(tags.join('<br />')); }); 

사용하실때는 글작성자를 위한 공감 및 댓글 부탁드려요 ㅠㅠ 개발자님들 바쁘신거 알지만 부탁드리겠습니다.

댓글