PHP URL 자동 링크 달기
게시판등을 보면 URL형식의 문자열에 자동으로 하이퍼링크가 들어가는것을 본적이 있을것이다.
간단하게 정규표현식을 이용해서 URL 형식의 문자열에 하이퍼링크를 다는 함수이다.
function url_auto_link($str = '', $popup = false) { if (empty($str)) { return false; } $target = $popup ? 'target="_blank"' : ''; $str = str_replace( array("<", ">", "&", """, " ", "'"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t", "'"), $str ); $str = preg_replace( "/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<a href=\"\\2\" {$target}>\\2</A>", $str ); $str = preg_replace( "/(^|[\"'\s(])(www\.[^\"'\s()]+)/i", "\\1<a href=\"http://\\2\" {$target}>\\2</A>", $str ); $str = preg_replace( "/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "<a href=\"mailto:\\0\">\\0</a>", $str ); $str = str_replace( array("\t_nbsp_\t", "\t_lt_\t", "\t_gt_\t", "'"), array(" ", "<", ">", "'"), $str ); return $str; }