[정규식] 해시태그(#) 뽑아내기
페이지 정보
작성자 MintState 댓글 0건 조회 12,744회 작성일 15-11-12 12:09본문
[정규식] 해시태그(#) 뽑아내기
해시태그를 뽑아 오는 정규식입니다.
결과
* 추가
https://saikyo4713.blog.me/221023839399
해시태그를 뽑아 오는 정규식입니다.
1 | <?php |
2 | $data = "가나다 #다라마 ABC #QWE 오오오오오오오오 #MINTSTATE #ㅊㅊㅊㅊ BBS" ; |
3 | preg_match_all( "/\\#([0-9a-zA-Z가-힣]*)/" , $data , $hashtags ); |
4 | print_r( $hashtags ); |
5 | ?> |
결과
* 추가
https://saikyo4713.blog.me/221023839399
001 | <?php |
002 | //본문에서 해시태그 변환 |
003 | function 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 | //본문에서 해시태그 추출 (배열) |
040 | function 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 | //본문내용 해시태그 변환 (본문 저장용으로 사용가능) |
068 | function 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 | //본문내용 해시태그 표기 (본문 저장용으로 사용가능) |
087 | function 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 |
105 | function string_to_replace( $str ) { |
106 | return $str ; |
107 | } |
108 | ?> |
|
댓글목록
등록된 댓글이 없습니다.