2009/07/25 04:52

mIRC Script / stripHTML - HTML 태그 제거

mIRC Script 에서 HTML 태그를 지워주는 함수.

hello <strong>world</strong> 이라는 문자열이 있다면 <strong>과 </strong>을 지우고 hello world 를 리턴해준다. 소켓으로 웹사이트에서 데이터를 읽어올 때 자주 쓰인다.

정규식을 사용했을 때

alias -l stripHTML {
  var %i = $1-
  var %regsub = $regsub(stripHTML,$1-,/<([^>]+)>/g,$null,%i)
  return $replace(%i,&lt;,$eval(<,0),&gt;,$eval(>,0),&nbsp;,$chr(32),$chr(9),$null)
}

정규식을 사용하지 않았을 때

alias -l stripHTML {
  var %msg = $1-
  var %i = 1
  while ($gettok(%msg, %i, $asc(<))) {
    if (*<*>* iswm $eval(<,0) $+ $v1) {
      %msg = $remove(%msg, $gettok($v2, 1, $asc(>)) $+ $eval(>,0))
      %i = 1
    }
    else inc %i
  }
  return $replace(%msg,&lt;,$eval(<,0),&gt;,$eval(>,0),&nbsp;,$chr(32),$chr(9),$null)
}

정규식을 사용하는 편이 더 간단하지만 mIRC 5.9 미만 버전에서는 정규식을 지원하지 않아 에러가 날 수 있다. 또한 정규식을 사용할 때 $regsub(stripHTML,$1-,/<([^>]+)>/g,$null,%i) 에서 $null 을 생략하고 $regsub(stripHTML,$1-,/<([^>]+)>/g,,%i) 로 작성해도 되지만, mIRC 5.9 에서는 문법 오류가 생기므로 $null 을 넣어주는 편이 좋다.

mIRC 버전에 따라 정규식 사용/미사용을 결정하고자 한다면 아래와 같이 작성하면 된다.

alias -l stripHTML {
  var %msg = $1-
  if ($version >= 5.9) {
    var %regsub = $regsub(stripHTML,$1-,/<([^>]+)>/g,$null,%msg)
    return $replace(%msg,&lt;,$eval(<,0),&gt;,$eval(>,0),&nbsp;,$chr(32),$chr(9),$null)
  }
  else {
    var %i = 1
    while ($gettok(%msg, %i, $asc(<))) {
      if (*<*>* iswm $eval(<,0) $+ $v1) {
        %msg = $remove(%msg, $gettok($v2, 1, $asc(>)) $+ $eval(>,0))
        %i = 1
      }
      else inc %i
    }
    return $replace(%msg,&lt;,$eval(<,0),&gt;,$eval(>,0),&nbsp;,$chr(32),$chr(9),$null)
  }
}
저작자 표시 비영리 동일 조건 변경 허락
Trackback 0 Comment 2