규도자 개발 블로그

html태그와 함께 안에 있는 content도 날려버리는 php함수 본문

PHP/PHP

html태그와 함께 안에 있는 content도 날려버리는 php함수

규도자 (gyudoza) 2019. 4. 12. 23:24

html태그와 함께 안에 있는 content도 날려버리는 php함수

function strip_tags_content($text, $tags = '', $invert = FALSE) {

    preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
    $tags = array_unique($tags[1]);

    if(is_array($tags) AND count($tags) > 0) {
        if($invert == FALSE) {
            return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
        }
        else {
            return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
        }
    }
    elseif($invert == FALSE) {
        return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
    }
    return $text;
}

php에는 html태그만 제거해주는 내장함수인 strip_tags라는 함수가 존재한다. 근데 이건 진짜 tag만 날리는 거라서 <span>글자글자</span>라는 요소가 있으면 '글자글자'부분은 그냥 남기고 span태그만 없애버린다. 이때 안에 있는 부분들까지 다 날려버릴 필요가 있을 때 쓰는 함수이다.

 내가 만든 건 아니고 이런 함수가 필요해서 strip_tags함수의 공식 홈페이지를 찾아봤는데 거기에 누가 만들어놔서 잘 쓰고 있다. 근데 찾기가 약간 힘들었어가지고 남겨놓으려 한다. 출처는 바로 이곳이다.

Comments