티스토리 뷰

게시물 내용에서 html 태그 날리려
strip_tags() 함수를 썼더니
<오전 10시> 와 같이 angle brackets 로 감싸져 있는 문자열도 함께 제거되는 문제가 발생하여
복잡한 대안을 만들었음.

<?php

// 원본 문장
$str = <<<EOF
<오전 10시>
블라<u>블라</u>블라블라<strong>블라</strong>블라블라블라
EOF;

// 함수 적용해보기
$result = getPlainText($str);

// 결과 출력
echo($str);

/**
* @brief plain text 반환 함수
* @description
*   angle brackets 문장 보존
*/
function getPlainText($str){
    // Remove js, css block
    $str = preg_replace('/<script|style\b[^>]*>(.*)<\/script|style>/is', "", $str);
    // Remove html comment
    $str = preg_replace('/<!--(.|\s)*?-->/', '', $str);
    // angle brackets 한글 문장 임시 치환
    $str = preg_replace('/<([^<a-zA-Z]+)>/i', '&lt;$1&gt;', $str);
    $str = strip_tags($str);
    // 임시 치환 했던 angle brackets 복원
    $str = str_replace('&lt;', '<', $str);
    $str = str_replace('&gt;', '>', $str);
    // 줄바꿈 문자 정리
    $str = trim($str);
	
    return $str;
}


댓글