YesYo.com MintState Forums
뒤로    Go3.co.kr MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

[정규식] 해시태그(#) 뽑아내기

페이지 정보

작성자 MintState 댓글 0건 조회 12,744회 작성일 15-11-12 12:09

본문

[정규식] 해시태그(#) 뽑아내기

해시태그를 뽑아 오는 정규식입니다.
1<?php
2$data = "가나다 #다라마 ABC #QWE 오오오오오오오오 #MINTSTATE  #ㅊㅊㅊㅊ BBS";
3preg_match_all("/\\#([0-9a-zA-Z가-힣]*)/", $data, $hashtags);
4print_r($hashtags);
5?>


결과




* 추가
https://saikyo4713.blog.me/221023839399
001<?php
002//본문에서 해시태그 변환
003function string_to_hashtag_content($os_type, $string)
004{
005    try
006    {
007        if(in_array($os_type, ['A', 'I', 'W']) && $string)
008        {
009            $result = array();
010            $re_all = "/(^|\s)*#(.+?)(?=[\s,#)]|$)/";
011            $re = "/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i";
012            preg_match_all($re_all, $string, $matches);
013            foreach($matches[0] as $s)
014            {
015                $str = strip_tags(trim($s));
016                $str = substr($str, 1, strlen($str)-1);
017                //특수문자 대체
018                if(!preg_match($re, $str))
019                {
020                    $str = string_to_replace($str);
021                    if(strlen($str) > 1)
022                    {
023                        switch($os_type)
024                        {
025                            case "A" : $result["#" . $str] = "<a href='javascript:alert(\"" . $str . "\")'>#" . $str . "</a>"; break;
026                            case "I" : $result["#" . $str] = "<a href='javascript:alert(\"" . $str . "\")'>#" . $str . "</a>"; break;
027                            default : break;
028                        }
029                    }
030                }
031            }
032            return strtr($string, $result) . '';
033        } else throw new Exception ('');
034    } catch (Exception $e) {
035        return $e->getMessage();
036    }
037}
038 
039//본문에서 해시태그 추출 (배열)
040function string_to_hashtag_db($string)
041{
042    try
043    {
044        if($string)
045        {
046            $result = array();
047            $re_all = "/(^|\s)*#(.+?)(?=[\s,#)]|$)/";
048            $re = "/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i";
049            preg_match_all($re_all, $string, $matches);
050            foreach($matches[0] as $s)
051            {
052                $str = strip_tags(trim($s));
053                $str = substr($str, 1, strlen($str)-1);
054                if(!preg_match($re, $str))
055                {
056                    $str = string_to_replace($str);
057                    if(strlen($str) > 1) $result[] = $str;
058                }
059            }
060            return array_unique($result);
061        } else throw new Exception ('');
062    } catch (Exception $e) {
063        return array();
064    }
065}
066 
067//본문내용 해시태그 변환 (본문 저장용으로 사용가능)
068function string_to_hashtag($mode, $string)
069{
070    $change = array();
071    preg_match_all("/(^|\s)*#(.+?)(?=[\s,#)]|$)/", $string, $matches);
072    foreach ( $matches[0] as $s )
073    {
074        $str = strip_tags(trim($s));
075        $str = substr($str, 1, strlen($str)-1);
076        //특수문자 대체
077        if(!preg_match("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", $str))
078        {
079            $str = string_to_replace($str);
080            if(strlen($str) > 1) $change["#" . $str] = "<TAG>#".$str."</TAG>";
081        }
082    }
083    return strtr($string, $change).'';
084}
085 
086//본문내용 해시태그 표기 (본문 저장용으로 사용가능)
087function hashtag_to_string($mode, $string)
088{
089    $change = array();
090    preg_match_all("/<TAG>(.*?)<\/TAG>/", $string, $matches);
091    foreach ( $matches[0] as $s )
092    {
093        $str = strip_tags($s);
094        switch($mode)
095        {
096            case "A" : $change[$str] = "<a href='javascript:alert(\"" . $str . "\")'>" . $str . "</a>"; break;
097            case "I" : $change[$str] = "<a href='javascript:alert(\"" . $str . "\")'>" . $str . "</a>"; break;
098            case "W" : $change[$str] = "<a href='javascript:alert(\"" . $str . "\")'>" . $str . "</a>"; break;
099        }
100    }
101    return strtr($string, $change).'';
102}
103 
104 
105function string_to_replace($str) {
106    return $str;
107}
108?>

댓글목록

등록된 댓글이 없습니다.

Total 165건 1 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
165 MintState 5896 05-17
164 MintState 6604 05-11
163 MintState 6672 04-05
162 MintState 6805 04-03
161 MintState 8735 01-18
160 MintState 7444 08-08
159 MintState 10869 07-31
158 MintState 8393 05-29
157 MintState 7451 02-22
156 MintState 8795 02-21
열람중 MintState 12745 11-12
154 MintState 9872 12-08
153 MintState 13634 02-26
152 MintState 17889 01-22
151 MintState 12122 07-27
150 MintState 14366 02-10
149 MintState 13728 10-21
148 MintState 17996 05-02
147 MintState 22563 04-18
146 MintState 15328 04-17
145 MintState 15783 04-17
144 MintState 14983 03-14
143 MintState 16702 03-04
142 MintState 17374 01-18
141 MintState 20611 07-02
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2025, Go3.co.kr MintState. ™