regex를 이용한 emoji 제거 ruby

이모티콘을 입력 하였을때 db에 저장되지 못하고 에러가 나는경우가 있다.

db의 설정이 이모티콘을 지원하지 않아서인데 db의 설정을 바꾸면 해결할 수 있다. 하지만 설정을 변경한경우

새로 생성되는 db에 대하여 적용될뿐 이미 저장되어진 db에 대해서는 적용이 안된다.

만약 db의 양이 많고 함부로 지울수 없을때 이모티콘만을 제거하는 방법을 사용하도록 한다.

그래도 제거되지 않는 경우가 있는데 그럴때는 이모티콘의 unicode값을 알아내서 직접 제거해 주어야한다.

유니코드를 얻기 위해서는 16진수로 변환하면 얻을수 있다.

//////////////////////////////////////////
def get_unicode(str)
  return str.ord.to_s(16)
end
///////////////////////////////////////////

def emo_remove(str)
    str = str.force_encoding('utf-8').encode
    
    regex = /[\u{1F601}\u{203C}\u{2049}\u{20E3}\u{2122}\u{2139}\u{2194}-\u{2199}\u{21A9}-\u{21AA}\u{231A}-\u{231B}\u{23E9}-\u{23EC}\u{23F0}\u{23F3}\u{24C2}\u{25AA}-\u{25AB}\u{25B6}\u{25C0}\u{25FB}-\u{25FE}\u{2600}-\u{2601}\u{260E        }\u{2611}\u{2614}-\u{2615}\u{261D}\u{263A}\u{2648}-\u{2653}\u{2660}\u{2663}\u{2665}-\u{2666}\u{2668}\u{267B}\u{267F}\u{2693}\u{26A0}-\u{26A1}\u{26AA}-\u{26AB}\u{26BD}-\u{26BE}\u{26C4}-\u{26C5}\u{26CE}\u{26D4}\u{26EA}\u{26F2}-\u{2        6F3}\u{26F5}\u{26FA}\u{26FD}\u{2702}\u{2705}\u{2708}-\u{270C}\u{270F}\u{2712}\u{2714}\u{2716}\u{2728}\u{2733}-\u{2734}\u{2744}\u{2747}\u{274C}\u{274E}\u{2753}-\u{2755}\u{2757}\u{2764}\u{2795}-\u{2797}\u{27A1}\u{27B0}\u{2934}-\u{2        935}\u{2B05}-\u{2B07}\u{2B1B}-\u{2B1C}\u{2B50}\u{2B55}\u{3030}\u{303D}\u{3297}\u{3299}\u{1F004}\u{1F0CF}\u{1F170}-\u{1F171}\u{1F17E}-\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E7}-\u{1F1EC}\u{1F1EE}-\u{1F1F0}\u{1F1F3}\u{1F1F5}\u{        1F1F7}-\u{1F1FA}\u{1F201}-\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}-\u{1F251}\u{1F300}-\u{1F320}\u{1F330}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F380}-\u{1F393}\u{1F3A0}-\u{1F3C4}\u{1F3C6}-\u{1F3CA}\u{1F3E0}-\u{1F3F0}\u{1F        400}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4F7}\u{1F4F9}-\u{1F4FC}\u{1F500}-\u{1F507}\u{1F509}-\u{1F53D}\u{1F550}-\u{1F567}\u{1F5FB}-\u{1F640}\u{1F645}-\u{1F64F}\u{1F680}-\u{1F68A}]/
    str = str.gsub regex, ''
    
    regex = /[\u{1f000}-\u{1ffff}]/
    str = str.gsub regex, ''
    regex = /[\u{fe000}-\u{fefff}]/
    str = str.gsub regex, ''
    regex = /[\u{fe0f}]/
    str = str.gsub regex, ''
    regex = /[\u{20e3}]/
    str = str.gsub regex, ''
    regex = /[\u{2600}-\u{27ff}]/
    str = str.gsub regex, ''

    return str
end

덧글

댓글 입력 영역