티스토리 뷰
요즘 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 />')); });
사용하실때는 글작성자를 위한 공감 및 댓글 부탁드려요 ㅠㅠ 개발자님들 바쁘신거 알지만 부탁드리겠습니다.
댓글